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

时间:2012-05-21 23:20:44

标签: c# mvvm

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

2 个答案:

答案 0 :(得分:1)

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

关于优势是什么:

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

答案 1 :(得分:0)

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

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

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