我刚开始学习EF 4.0 CodeFirst,我想听听专家的意见 EF CodeFirst的优点和缺点是什么?
答案 0 :(得分:8)
我认为每种方法更适合不同的场景:
建议使用Database-first或Model-First的场景:
建议使用代码优先的场景:
如果您想要一个足够动态的持久数据库来包含不断变化的结构,那么请考虑您的模型/模式为了不同/依赖于上下文而重用的泛型类/表。
的更新强>
我现在建议在其他情况下使用Code-First:
答案 1 :(得分:5)
我一直是数据中心方法的倡导者,我相信这是优势和劣势的来源。
如果您的优势在于数据库设计和开发,您可能会发现从数据库架构开发更容易,更直观。但是,如果您在对象和类中更好地思考,或者如果您直接从类模型开始工作,那么从CodeFirst角度开始可能会更好。
就我个人而言,我发现自己必须根据CodeFirst的观点进行更多更改,而这些更改来自于生成我的类的“DataFirst”。
答案 2 :(得分:0)
主要区别在于Code First要求您在代码中定义所有内容,而Model / Database首先要求您在XML / Designer中定义所有内容,并且只在代码中定义最少的内容。
例如,如果您想要双向导航属性,则必须在每个实体中为其编写代码。使用其他方法时会自动生成此信息。
我喜欢首先给你的电源代码,但大部分时间我都不会费心去做所有这些。
在大多数情况下,你会得到完全相同的东西。这就是你的模型。
另一个缺点是(当前)在Code中,当你进行更改时,它会丢弃表并重新创建它。丢失所有数据(您当然可以为数据库设定种子,但您不会获得可能手动输入的数据)。这将在Code First Migrations产品发布时解决。