0

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

4

2 回答 2

1

不,你在这里展示的是某种Repository。存储库通常(但不总是)与 ORM(对象关系映射器)对话,后者将对象转换为 SQL 查询(反之亦然)。

至于优点是什么:

现在您只通过数据访问层查询数据库,您可以通过模拟或存根对象替换该层(通过实现/模拟其接口)以进行单元测试。通过这种方式,您无需在数据库中实际编写任何内容即可执行测试,因为您的存根/模拟实际上并没有做任何事情。另一个优点是更容易将数据源替换为另一个数据源(即从关系数据库迁移到 NoSQL),因为您所有的数据访问代码都在一个地方。

于 2012-05-21T23:24:59.867 回答
0

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

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

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

于 2012-05-21T23:29:55.187 回答