据我所知(如果我错了,请纠正我),使用Entity Framework有两种主要方法:
我有一个现有的数据库,我想自己编写代码。这是否支持“仅限代码”方法?这种方法在EF的背景下是否有意义?
答案 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