我有一个使用Entity Framework Database First样式开发的项目。我对各种模型文件进行了一些更改,现在每次我从数据库"更新模型和#34;在我的EDMX文件中,这些更改被删除了。我看到有一个Refresh选项卡,它列出了我的模型文件,但没有办法告诉VS不刷新这些文件。我该怎么办?感谢。
答案 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)
我认为你问题的最佳答案是: 开始学习实体框架代码优先