今天保存對象時碰到問題:
{"列名 '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]就行了
還有其他的出錯可能,有一種是由於父類有好幾個繼承的子類,其中一個忘記添加了映射導致。
至於其他的可能,碰到再說