在我的mvvm项目中有一个接口,它包含add,update,delete接口。因此接口是数据访问层。代码是:
public interface IAccountDataSource
{
bool Add(Account account);
bool Update(Account account);
bool Remove(Account account);
Account GetById(int id);
Account GetByName(string name);
IEnumerable<Account> GetByCategory(AccountCategory accountCategory);
IEnumerable<Account> GetBySearchTerm(string searchTerm);
IEnumerable<Account> GetAll();
event EventHandler<ObjectAddedEventArgs> AccountAdded;
event EventHandler<ObjectUpdatedEventArgs> AccountUpdated;
event EventHandler<ObjectRemovedEventArgs> AccountRemoved;
}
enter code here
任何人都说数据访问层意味着ORM与否。数据访问层的优势是什么?
答案 0 :(得分:1)
没有。你在这里展示的是某种Repository。存储库通常(但不总是)与ORM(对象关系映射器)进行对话,ORM将对象转换为SQL查询(反之亦然)。
关于优势是什么:
现在您只通过数据访问层查询数据库,您可以通过模拟或存根对象替换图层(通过实现/模拟其接口)以进行单元测试。这样您就可以执行测试而无需在数据库中实际编写内容,因为存根/模拟实际上并没有执行任何操作。另一个优点是,更容易用另一个数据源替换数据源(即从关系数据库移到NoSQL),因为所有数据访问代码都在一个地方。
答案 1 :(得分:0)
数据访问层允许您抽象出如何访问数据的实现,并且根据数据的存储位置(即:数据库,文件系统等)将有所不同
如果您希望将存储在数据库中的数据映射到某种对象集,可以使用ORM(对象关系映射器)来实现数据访问层。
话虽如此,您的界面看起来像是在强制执行存储库模式方法。