仅限EF 4.1代码?

时间:2011-06-17 02:48:20

标签: c# entity-framework entity-framework-4.1 ef-code-first

据我所知(如果我错了,请纠正我),使用Entity Framework有两种主要方法:

  1. 模型优先:从预定义的数据库开始,让EF为您创建代码。
  2. 代码优先:编写代码,让EF为您创建数据库。
  3. 我有一个现有的数据库,我想自己编写代码。这是否支持“仅限代码”方法?这种方法在EF的背景下是否有意义?

5 个答案:

答案 0 :(得分:5)

我不同意其他大多数答案。从我所看到的,EF“Code First”技术实际上只是一种使用约定,注释或流畅的映射定义来定义模型的方法,而不是EDMX文件。如果您编写“Code First”文件来镜像数据库模式,则没有理由说Entity Framework无法使用LINQ to Entities生成相应的查询和语句。

有关更多信息,请参阅Scott Guthrie关于Using EF "Code First" with an existing database的帖子。

答案 1 :(得分:2)

Entity Framework Power Tools允许您对数据库进行反向工程,以便像代码一样生成代码(不会重新生成数据库)。然后你可以根据需要从那里调整它。

答案 2 :(得分:1)

我相信您必须决定您的参考系统是什么 - 代码(代码优先)或数据库(模型优先)。如果你有一个现有的数据库,那么采用Code First方法,如果不从代码或模型中的代码生成模型,就很难保持变化的同步。

如果您有现有数据库,但想要将模型扩展到生成的代码之外,则可以实现部分类来实现此目的。

如果您想手动映射EF4代码和数据库,可以考虑this approach。但是,这消除了ORM的一些好处,即为您设置映射。

答案 3 :(得分:1)

嗯,我猜你在这种情况下也不能吃蛋糕了 - 你的模型必须有一个明确的来源,它是数据库(数据库优先) ,然后为您生成匹配的代码,或代码(代码优先),然后将创建匹配的数据库。

答案 4 :(得分:1)

实体框架团队在他们的博客上回答了这些问题: http://blogs.msdn.com/b/adonet/archive/2011/03/07/when-is-code-first-not-code-first.aspx