日期:2014-05-17  浏览次数:20452 次

MVC和Entity Framework 的问题
      小弟最近工作需要使用MVC,由于之前没有使用过。看了下官方的例子,有几个疑惑不是很清楚,特问问大家是怎么使用。
      
      新建MVC3.0项目的时候发现项目自带了Entity Framework,于是又看了下Entity Framework,由于之前的项目都是直接使用ado.net 的,就从数据库拉了个edmx。然后问题就有了。
   1. MVC中的 model可以直接用Entity Framework替代吗?
   
   2.如果可以,数据库更新后edmx也更新,随之实体的[Required] 等都被刷新了,如何解决。
    

   3. 默认例子中Global的
 Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");
 这句话是如何理解的。感觉数据库连接没有指定数据库啊。
   
   4.给个比较易懂的例子最好了

   小弟对mvc和Entity Framework都不是很了解,请各位帮帮忙。
    谢谢!!!
MVC Entity?Framework

------解决方案--------------------
(1)MVC中的“M”,最好不要和数据库的模型挂钩,而是使用"ViewModel"表示View的数据。
(2)数据库更新带动模型更新,这个叫DBFirst,你可以用ModelFirst或者CodeFirst。
(3)这个叫localdb,是运行的时候附加数据库文件上去的。
------解决方案--------------------
MVC中的 model可以直接用Entity Framework替代吗?
我觉得最好不要直接用EF中的model可以是与数据库的表是ORM关系,与model有相似但不能直接使用,应该在数据返回时有一个转换的动作,就是edmx的model转换成MVC的model
------解决方案--------------------
楼主可以考虑用Entity Framework的Code First模式:
http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx
新数据库使用Code First:
http://msdn.microsoft.com/en-us/data/jj193542.aspx

已存在的数据库使用Code First:
http://msdn.microsoft.com/en-us/data/jj200620.aspx

=================================================================
ASP.NET MVC免费分页控件MvcPager 2.0版发布,功能更强大,欢迎使用:
http://www.webdiyer.com/mvcpager/
------解决方案--------------------
引用:
Quote: 引用:

MVC中的 model可以直接用Entity Framework替代吗?
我觉得最好不要直接用EF中的model可以是与数据库的表是ORM关系,与model有相似但不能直接使用,应该在数据返回时有一个转换的动作,就是edmx的model转换成MVC的model


谢谢,问个比较弱智的问题,一般公司都是这样的吗?


不一定,尽管这种分离看上去似乎结构更好,但这个【转换的动作】在实践中会带来很多工作量,会造成大量相似的 ViewModel,转换是双向的,不但要从 DataModel 转换成 ViewModel,还要从 ViewModel 转换成 Model,前者可以使用自动化的工具,但后者通常需要手写。如果你的项目规模不大,人手不是很充足,建议只在必要的时候针对个别页面进行这种分离
------解决方案--------------------
引用:
...
谢谢,我对Code First不是很熟悉,不过我认为数据库应该是程序的核心,用代码改变数据库的结构,有点虚。

Code First 并不代表是用代码改变数据库结构,他们只是一个映射关系;现在的asp.net MVC 的model 早已不是传统模式中的Model了,传统模式中的Model是获取数据包含业务逻辑。现在asp.net mvc中的model只是一种容器,Controller获取数据后把数据存放在Model中,它并不包含任何业务逻辑。