2012-08-30 48 views
1

我想从头开始创建一个项目。我将使用asp .net mvc4(带有asp网络api)以及用于数据访问的实体框架(所有最新技术)建议从头开始一个实体框架代码第一个项目

由于这是一个全新的开始,我一直在考虑将我的设计集中在我的模型上而不是首先创建数据库然后创建EF模型,所以我尽管会采用代码优先的方法。

代码优先的问题(据我所知)是你失去了EF在模型优先场景中为你做的所有脚手架(设计支持,轻松生成和维护实体关系1-1,1- * ,-等) 问题是:在设计我的模型时,我可以使用什么工具或模板或片段或其他方法使我的生活更轻松?我希望这个过程尽可能无痛苦,因为它涉及很多重复(例如,FK关系总是相同的) 我应该使用DbContext还是其他?有什么方法可以首先启动代码,但同时维护一个edmx模型,还是那些是互斥的?

谢谢!

+0

听起来像你只是想使用模型第一。 Code First适用于那些不想让模型设计师惹恼的人。 –

+0

这很好,我没有与模型设计师混淆,实际上,我更喜欢尽可能多地控制我所拥有的,并以我的模型为中心。但是,无论如何,我需要设置所有东西:类,约束等之间的关系,这些关系最终会在生成的数据库中结束。我想知道的是我可以使用哪些工具来帮助脚手架重复执行任务 –

+0

例如,通过集合属性和外键属性在您构建的类中定义关系。您可以使用DataAnnotations或Fluent Configuration来为数据库生成定义各种约束和提示。至于脚手架的重复性任务,这确实超出了EF的范围。 –

回答

3

EF Code First的伟大之处在于您不需要任何脚手架。您不需要EDMX模型,您甚至不需要指定关系的确切性质,它都基于约定。例如,你的类必须有一个名为Id的属性,它将被视为表的主键。所有基于字符串的字段生成为nvarchar(MAX)。当然,有些约定可能并不是你想要的,Code First通过可插入约定来支持这个约定(你可以删除大多数约定并创建你自己的约定)

你应该做一些基本教程,以了解Code First流程起作用,因为它与Db First方法完全不同。

+0

除非您指定最大字符串长度,否则“字符串”字段实际上以“nvarchar(MAX)”生成。否则,完全正确! +1在预期的小错误被修复:) –

+0

大声笑,谢谢,我想它可能是NHibernate的默认生成它们为255。 –

+0

谢谢Jaimal!你能指出我一些很好的EF5代码的第一个教程吗? (除了msdn) –

相关问题