zoukankan      html  css  js  c++  java
  • 保存对象时碰到的问题-列名 'Discriminator' 无效

    今天保存对象时碰到问题:
    {"列名 'Discriminator' 无效。 列名 '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]就行了
    还有其他的出错可能,有一种是由于父类有好几个继承的子类,其中一个忘记添加了映射导致。
    至于其他的可能,碰到再说
  • 相关阅读:
    av 1. Computer Abstractions and Technolog
    计算机组成与设计硬件/软件接口 (MIPS版)
    7. 我们的十个数字
    6.电报机与继电器qk
    六. Vue CLI详解
    五. Webpack详解
    四. 前端模块化
    一. Vue简介
    三. Vue组件化
    7. Git原理
  • 原文地址:https://www.cnblogs.com/danlis/p/6397343.html
Copyright © 2011-2022 走看看