所以我在我的应用程序中创建了一个业务数据层,因此我显然需要API来访问我的数据。
如何逃避选择:
实现ICreatable,IReadable,IUpdatable,IDeletable,每个类几乎完全相同,这使得我编写相同的代码很多
扩展现有的通用数据类,其中包含我不喜欢的所有4个CRUD,因为我希望只读取一些数据
我真正喜欢的是多重继承,这样当我需要em时,我可以简单地使用Creatable,Removable,Updatable或Removable抽象类进行扩展
我正在考虑制作抽象的CRUDable和Readable类,它们似乎是重复编码的最少量,同时避免了多重继承和维护问题
答案 0 :(得分:1)
如果我理解你的问题,我认为你要找的是使用作文。例如:
public class OrderRepository<Order> : ICreateable<Order>, IReadable<Order>, IUpdateable<Order>, IDeleteable<Order>
{
private ICreateable<Order> _createable;
private IReadable<Order> _readable;
private IUpdateable<Order> _updateable;
private IDeleteable<Order> _deleable;
public void Add(Order item)
{
_createable.Add(item);
}
public Order GetById(int id)
{
return _readable.GetById(id);
}
}
public class Creatable<T> : ICreateable<T>
{
public void Add(T item)
{
//Add to entity framework?
}
}
public class Readable<T> : IReadable<T>
{
public T GetById(int id)
{
//Get from entity framework?
}
}
这样你只需编写一次通用组件,并通过实现相应的接口选择哪些存储库支持它们
答案 1 :(得分:0)
您可以使用Unit-Of-Work,为您的所有课程提供实用的存储库。看看我的实施here
如果你想添加更多的模型,你只需要在IUowData接口中放一行,在UowData类中放一个小方法
我希望这会有所帮助。