当鉴别器 (__Disc__) 字段用作条件时,如何更改它
我必须更新和更改表的鉴别器(_Disc_)字段,而映射实体没有将其作为实体成员。有什么解决办法吗?
I have to update and change Discriminator(_Disc_) field of a table while mapped entities doesn't have it as an entity member. any solution?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
鉴别器列用于定义 TPH 继承中的实体类型,EF 无法更改它 - 永远不会。它就像任何面向对象语言中的继承一样 - 一旦定义了某种类型的对象,你就无法使其成为不同的类型 - 你只能将其强制转换为父级,但它仍然是原始类型的实例。将其更改为不同类型的唯一方法是创建新类型的新实例,并以某种方式将值从第一个对象复制到新对象。
因此,如果您需要更改鉴别器,则必须使用旧的 ADO.NET 和 SQL 在没有 EF = 的情况下进行更改,但如果您的更改不遵循实体模型中的其他规则,您将破坏 EF 功能,并且您的应用程序将无法工作。
Discriminator column is used to define type of entity in TPH inheritance and EF cannot change it - never. It is like inheritance in any object oriented language - once you define object of some type you cannot make it different type - you can only cast it to parent but it will still be instance of original type. The only way to change it to different type is to create a new instance of the new type and somehow copy values from the first object to the new one.
So if you need to change discriminator you must do it without EF = by using old ADO.NET and SQL but if your change will not follow other rules in your entity model you will break EF functionality and your application will not work.