如何在从数据库执行“更新模型”时保持模型文件不被刷新"?

时间:2017-07-07 16:13:20

标签: c# entity-framework visual-studio-2015

我有一个使用Entity Framework Database First样式开发的项目。我对各种模型文件进行了一些更改,现在每次我从数据库"更新模型和#34;在我的EDMX文件中,这些更改被删除了。我看到有一个Refresh选项卡,它列出了我的模型文件,但没有办法告诉VS不刷新这些文件。我该怎么办?感谢。

4 个答案:

答案 0 :(得分:2)

不要将更改直接写入.edmx类。这些类是由ef生成的。生成的类被定义为partial,以便您可以在单独的物理文件中定义自己的部分类,以扩展生成的功能。

这是一个很好的例子

https://dotnetcodr.com/2015/02/18/extending-class-definitions-with-partial-classes-in-c-net/

它甚至在生成的.cs文件的顶部说明

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

答案 1 :(得分:0)

取决于你改变了什么。如果您对edmx模型进行了更改,则每次重新生成模型时都会覆盖它们。

如果您对生成的poco类进行了更改,则视情况而定。 Poco是作为部分类生成的。只需创建一个子文件夹,并将poco扩展到具有相同类签名的单独文件中。

同样适用于模型上下文类(yourModelName.Context.cs)。更改也应在单独的文件中完成。

也许你应该尝试'数据库中的Code First'。这会生成一个Fluent模型,更容易根据您的特定需求进行更改。虽然没有模型的图形表示。

答案 2 :(得分:0)

就像你说的那样...它的DatabaseFirst ...所以你的模型文件将从数据库更新(不是任何其他地方......不是你)。你不应该这样做...因为每次更改都会丢失您再次从数据库更新您的模型! ...如果你因为某些原因改变你的模型,比如添加列或(...)你必须从你的数据库而不是这里做...!但如果你因为其他原因更改它,比如添加验证属性或..你必须使用部分课!!不直接写在模型文件中。

答案 3 :(得分:-2)

我认为你问题的最佳答案是: 开始学习实体框架代码优先