MVVM 中的对象关系映射和数据访问层有什么区别

本文关键字:访问 什么 区别 数据 对象 关系 映射 MVVM | 更新日期: 2023-09-27 18:35:05

在我的 MVVM 项目中,有一个接口包含添加、更新、删除接口,因此接口是数据访问层。

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?数据访问层的优势是什么?

MVVM 中的对象关系映射和数据访问层有什么区别

No.您在此处显示的是某种存储库。存储库通常(但并非总是)与ORM(对象关系映射器)通信,ORM将对象转换为SQL查询(反之亦然)。

至于优势是什么:

现在,您仅通过数据访问层查询数据库,因此可以通过模拟或存根对象替换该层(通过实现/模拟其接口)以进行单元测试。通过这种方式,您可以在不实际在数据库中写入某些内容的情况下执行测试,因为您的存根/模拟实际上不会执行任何操作。另一个优点是,用另一个数据源替换数据源(即从关系数据库移动到NoSQL)更容易,因为所有数据访问代码都在一个地方。

数据访问层允许您抽象出访问数据方式的实现,并且会根据数据的存储位置(即:d atabse,文件系统等)而有所不同。

您可以使用

ORM(对象关系映射器)来实现数据访问层,以防您希望将存储在数据库中的数据映射到某种对象集。

话虽如此,您的界面看起来像是在强制执行存储库模式方法。

相关文章: