के साथ जेनेरिक रिपोजिटरी पैटर्न मैं एक सामान्य भंडार पैटर्न को लागू करने की कोशिश कर रहा हूं। मुझे यह साइट मिली जो मुझे लगता है कि यह अच्छी तरह समझाया गया है। http://www.tugberkugurlu.com/archive/generic-repository-pattern-entity-framework-asp-net-mvc-and-unit-testing-triangleयूनिटऑफवर्क पैटर्न
मेरा उद्देश्य डेवलपर्स को कुछ समय और कीस्ट्रोक को बचाने के लिए है और मुझे पता है कि यह मेरी मदद करेगा।
तो मेरे पास 2 प्रश्न हैं:
1. क्या यह एक अच्छा दृष्टिकोण है या नहीं, क्या मुझे भविष्य में कुछ समस्याएं होंगी?
2. मैं इसे यूनिटोफवर्क पैटर्न के साथ कैसे जोड़ सकता हूं ?, मैं पाठ्यक्रम की अमूर्त कक्षा का एक उदाहरण नहीं बना सकता, इसलिए निम्न कोड इसकी अमान्य है।
public class UnitOfWork : IDisposable
{
#region Private fields
private readonly MyCompanyContext _context = new MyCompanyContext();
private GenericRepository<MyCompanyContext, Task> _taskRepository;
public GenericRepository<MyCompanyContext, Task> TaskRepository
{
get
{
return _taskRepository ??
(_taskRepository = new GenericRepository<MyCompanyContext, Task>());
}
}
namespace MyCompany.DAL.Repository
{
public interface IGenericRepository<T> where T : class
{
IQueryable<T> GetAll();
IQueryable<T> FindBy(Expression<Func<T, bool>> predicate);
void Add(T entity);
void Delete(T entity);
void Edit(T entity);
void Save();
}
public abstract class GenericRepository<C, T> :
IGenericRepository<T>
where T : class
where C : DbContext, new()
{
private C _entities = new C();
public C Context
{
get { return _entities; }
set { _entities = value; }
}
public virtual IQueryable<T> GetAll()
{
IQueryable<T> query = _entities.Set<T>();
return query;
}
public IQueryable<T> FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
{
IQueryable<T> query = _entities.Set<T>().Where(predicate);
return query;
}
public virtual void Add(T entity)
{
_entities.Set<T>().Add(entity);
}
public virtual void Delete(T entity)
{
_entities.Set<T>().Remove(entity);
}
public virtual void Edit(T entity)
{
_entities.Entry(entity).State = System.Data.EntityState.Modified;
}
public virtual void Save()
{
_entities.SaveChanges();
}
}
}
मुझे लगता है कि मैं अमूर्तता की एक और परत जोड़ रहा हूं, मैं बस अपने कोड को बस इतना आसान बनाने के लिए उपयोग कर रहा हूं। जेनेरिक रिपोजिटरी पैटर्न के साथ मैं सीआरयूडी बहुत कुशल तरीके से कर सकता था। लेकिन यही कारण है कि मैंने अपने पहले प्रश्न को पहले स्थान पर क्यों पूछा, क्या मुझे इस दृष्टिकोण के साथ तकनीकी समस्याएं –
हां, आप सही हैं, यूओ के साथ आप वास्तव में अमूर्तता की एक और परत नहीं जोड़ रहे हैं। मुझे लगता है कि यद्यपि बहुत सरल परिदृश्यों को छोड़कर यूओयू बहुत उपयोगी नहीं है, और हां, मुझे लगता है कि आपको तकनीकी समस्याएं हो सकती हैं यदि आपको कई से अधिक रिश्तों का प्रबंधन करना है। –
@LuisEValencia> एचएम, मुझे नहीं लगता कि यह आपके कोड को कैसे सरल बनाता है? – Giedrius