保存對象時碰到的問題-列名 'Discriminator' 無效


今天保存對象時碰到問題:
{"列名 'Discriminator' 無效。\r\n列名 'Discriminator' 無效。"}
 百度了一下,百度找到的一個解決:
 內容:
環境:asp.net 4.0 + MVC 4 + Entity Framework 5
異常:使用code first 碰到錯誤:列名 'Discriminator' 無效。這是一個很少見的錯誤,搜索了很久才發現是code first 的poco實體對象的繼承問題。
比如,我定義了一個實體類,對應數據庫的Project表:
public class Project { int Id { get; set; } string Name { get; set; } }
后來又定義了一個子類ChildProject繼承於它,但是子類不對應數據庫任何表:
public class ChildProject : Project { }
於是每次EF的Context訪問到Project或者ChildProject的時候,都出現了錯誤:列名 'Discriminator' 無效。
解決辦法:子類並不映射到任何數據庫,加上一個不映射的屬性 [NotMapped]就可以了。
[NotMapped] public class ChildProject : Project { }
 
 
總的意思就是由於繼承,導致context無法識別子類,造成錯誤。
在繼承的類上加上[NotMapped]就行了
還有其他的出錯可能,有一種是由於父類有好幾個繼承的子類,其中一個忘記添加了映射導致。
至於其他的可能,碰到再說


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM