实体框架,更新

时间:2010-07-16 14:19:33

标签: asp.net-mvc entity-framework-4

由于“添加”程序的模式,我在Entity Framework(4.0)上遇到了很多麻烦。 (使用ASP.NET MVC)

问题在于,感觉实体框架的整个结构旨在“一次性构建所有内容”。由于工具的所有变化,它似乎不适合逐步发展。 I.E如果我改变我的数据库,那么它就会使模型变得富有 - 并且尝试进行更新会导致各种各样的破坏和混乱。如果我所要做的就是重新拖动所有内容并且我的模型逐字工作,这也不错,但我必须进行手动编辑以微调事物......并且它变得重复,并且容易出错。

有没有人知道这类问题有哪些更好的工具或方法?

2 个答案:

答案 0 :(得分:2)

好的,拿两个。听起来不是使用设计器,而是使用代码优先路径并利用数据注释。

数据注释:http://blogs.msdn.com/b/efdesign/archive/2010/03/30/data-annotations-in-the-entity-framework-and-code-first.aspx - 查看storeNameAttribute,了解您在我删除的答案的评论中提到的具体案例

良好的代码优先写入: http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx

我刚刚开始深入研究这个问题,但我已经开始运行一些小样本,所以如果你有具体问题请告诉我,我会尽力回答。

答案 1 :(得分:0)

你以前做过什么?您是否重构了数据库而不必更改代码?

到目前为止,我已经使用了从ADO.NET到3个.NET ORM(Nhibernate,Linq2Sql和Entity Framework)的所有东西,涉及Django和Python,现在正在Ruby on Rails中徘徊。这些工具都没有完全解决数据库和代码之间阻抗不匹配的问题。

某处某处必须存在此代码:

DBCOLUMN => CODE //or
myModel.Property = rdr["something"]  //or
<Property Name="EndDate" Type="datetime" /> //or
Id(x => x.Id);

无论是在Rails视图,迁移文件,Linq2Sql设计器还是Fluent Nhibernate文件中都无关紧要。它总是会成为一个问题。

我的建议是尽量减少错配。不要在设计器中重命名命名错误的列,并采取每一步使数据库和代码之间的约定相同。

另一个回答者提供的工具只是简单地改变重命名的位置,但实际上你总是要做这种工作。