如何避免在c#中为业务数据层中的每个类实现完全CRUD
本文关键字:实现 CRUD 何避免 数据 业务 | 更新日期: 2023-09-27 18:04:56
我在我的应用程序中创建一个业务数据层,所以我显然需要API来访问我的数据。
如何避免选择:
-
实现ICreatable, IReadable, IUpdatable, IDeletable,这对每个类来说几乎是相同的,这让我写了很多相同的代码
-
扩展现有的通用数据类,它具有所有4个CRUD,我不喜欢,因为我想要一些数据是只读的
我真正想要的是多重继承,这样我就可以简单地扩展与可创建,可移动,可更新或可移动的抽象类,当我需要他们
我正在考虑制作抽象的可读类,这似乎是最少的重复编码,同时避免多重继承和维护问题
如果我对你的问题理解正确的话,我认为你想要的是利用构图。例如:
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?
}
}
这样您只需编写一次通用组件,并通过实现相应的接口来选择哪些存储库支持它们
您可以使用Unit-Of-Work,为您的所有类拥有一个实用的存储库。看看我在这里的实现
如果你想添加更多的模型,你只需要在iowdata接口中添加一行,在UowData类中添加一个小方法