EDMX图中使用实体框架4.1代码优先优于模型/数据库优先的优点和缺点是什么?
我试图充分理解使用EF 4.1构建数据访问层的所有方法。我使用存储库模式和IoC。
我知道我可以使用代码优先的方法:手动定义实体和上下文,并使用ModelBuilder对模式进行微调。
我还可以创建一个EDMX图并选择一个代码生成步骤,该步骤使用T4模板来生成相同的POCO类。
在这两种情况下,我最终得到的POCO对象是ORM不可知的,而上下文则来自DbContext。
数据库优先似乎是最有吸引力的,因为我可以在企业管理器中设计数据库,快速同步模型并使用设计器对其进行微调。
那么这两种方法有什么不同呢?仅仅是VS2010 vs企业管理器的偏好问题吗?
数据库优先和模型优先没有真正的区别。
生成的代码是相同的,您可以结合这两种方法。例如,您可以使用设计器创建数据库,也可以使用sql脚本更改数据库并更新模型。
当你首先使用代码时,你不能在没有重新创建数据库和丢失所有数据的情况下改变模型。恕我直言,这个限制非常严格,不允许在生产中首先使用代码。目前它还不能真正使用。
代码的第二个次要缺点首先是模型构建器需要对主数据库的特权。如果您使用SQL Server Compact数据库或控制数据库服务器,这不会影响您。
代码的优点首先是非常干净和简单的代码。您可以完全控制这些代码,并可以轻松地修改和使用它作为您的视图模型。
我建议使用代码优先的方法,当你创建简单的独立应用程序,没有版本,并使用模型\数据库优先的项目,需要在生产中修改。
在SP1之前,使用大型机型的速度非常慢(SP1之后还没有尝试过,但据说现在很容易)。
我仍然先设计我的表,然后内部构建的工具为我生成poco,因此它承担了为每个poco对象执行重复任务的负担。
当你使用源代码控制系统时,你可以很容易地跟踪poco的历史,而使用设计器生成的代码就不那么容易了。
我的POCO有一个基础,这使得很多事情变得非常简单。
我有所有表的视图,每个基本视图为外键带来基本信息,我的视图POCO派生自我的POCO类,这是非常有用的。
最后,我不喜欢设计师。