使用数据库优先方法,如何分离Core和Infrastructure层?

时间:2013-07-16 02:23:24

标签: asp.net-mvc entity-framework onion-architecture

根据onion architecture我应该在我的“核心”或“域”层中拥有我的域模型(用户,学生,教师),并在我的“基础架构”层中拥有我的DbContext。

我在我的MVC4应用程序中使用Entity Framework 5,并且我正在使用ADO.NET数据库优先方法(应用程序的数据库已经存在)。由于ADO.NET为我生成实体(.edmx文件),如何将域与数据库层分开?

目前我在Core中有我的实体模型,但是由于Core不应该知道如何访问数据,所以不会破坏架构吗?

1 个答案:

答案 0 :(得分:1)

那么,当EF家伙决定根据EF建立应用程序的不同方式时,他们没有选择最好的措辞!

根据Rowan Miller自己:

  

不可否认,'Code First'不是名字的最佳选择...... Code First是   它实际上只是EF Designer的基于代码的替代品,它支持   创建新数据库或映射到现有数据库。使用代码   首先针对现有数据库通常称为“Code Second”   因为......嗯......你先拥有数据库,然后编写代码   第二

那就是说,你现在知道,即使用现有数据库启动项目,也可以摆脱EDMX。
请一步一步地查看that article

只要生成所有内容,只需将事物放在正确的位置即可使Core图层不可知。

看看这个SO answer我帮助过有类似问题的人。