列名 '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
{

}

列名 'Discriminator' 无效

时间: 2024-07-29 11:40:04

列名 'Discriminator' 无效的相关文章

EF框架中加子类后出现列名 'Discriminator' 无效问题

类中有些属性,特别是一些通过计算或合并列得出的结果,我们并不需要其记录到数据库中,就可以通过配置不让它生成在数据库中. 在子类上加上 [NotMapped] 声明即可!这样此类就会忽略映射. EF框架中加子类后出现列名 'Discriminator' 无效问题

列名 'Discriminator' 无效 解决方案

{"列名 'Discriminator' 无效.\r\n列名 'Discriminator' 无效.\r\n列名 'Discriminator' 无效.\r\n列名 'FileUrl' 无效."} 问题解决方案:        [NotMapped]        private class ElfinderFileDto : ElfinderFile        {            public string FileUrl { get; set; }        } 增加

[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]列名 'user1' 无效

唉,还是自己对php执行sql语句运用不熟练.... 我的错误代码是这样的,(解决办法在最后) $re=sqlsrv_query($conn, "select * from visitor where username = ".$name); $row = sqlsrv_fetch_array($re); if (is_null($re) || !$re) { print_r(sqlsrv_errors()); } 一开始只有前两行,然后报错,通过 sqlsrv_errors() 输出

操作数据库出现列名“xxx”无效的问题

在查询数据库数据时,出现以下错误: 提示列名无效,但是该列在数据库又是实际存在的,并且给该列赋的值也是合法的,那么就看看在就需要检查查询语句书写是否正确了,在我遇到的问题中,就是给条件字段赋值时没有加单引号 出现上面错误的查询语句: public string GetSqlstr(string num) { StringBuilder sb = new StringBuilder(); sb.Append("select * from PicInfos where "); sb.App

关于Entity Framework关系配置,提示列名XXXX_Id无效的问题

问题描述 : 数据库中有两张表,如下: Member(会员)表有外键RoleId,对应的是Role(角色)表的主键Id,业务逻辑是Member表的RoleId必须与Role表的Id对应(但在设计数据表时没有设置外键,使用EF(Entity Framework,下同)来配置) 首页Member的代码如下: public partial class Member { public int Id { get; set; } public string Name { get; set; } public

delphi TAdoQuery组件的close方法可能导致”列名无效“错误

1,故障现象 一次程序运行,出现如下错误: 对应代码如下: 2,故障分析 Query_alert_2的语句在查询分析器中单独执行是正常的.排除语句出错. 如果注解掉Query_alert_1,则错误变为Query_alert_3执行出错: 2019-07-11 09:32:26 Query_alert_1执行完毕 2019-07-11 09:32:27 Query_alert_2执行完毕 2019-07-11 09:32:42 Do_Update_Statis出错:列名 'bat_pos1' 无

(网上搜集)金蝶报错:名称或代码在系统中已被使用

KIS专业版 --修正核算项目关系 select * from t_itemdetail exec sp_cleanitemdetailv GO update a set a.fdetailcount=b.Fcount from t_itemdetail a join (select Fdetailid,count(*) as Fcount from t_itemdetailv where fitemid=-1 group by Fdetailid) b on a.fdetailid=b.fde

hibernate的component使用

hibernate的Component,即组件,表示2个类之间的关系,即其中1个类可以作为另一个类的组件来使用. 1.先来看下annotation中关于component的API 2.2.2.3. 嵌入式对象(又名组件) 在实体中可以定义一个嵌入式组件(embedded component), 甚至覆盖该实体中原有的列映射. 组件类必须在类一级定义@Embeddable注解. 在特定的实体的关联属性上使用@Embedded和@AttributeOverride注解可以覆盖该属性对应的嵌入式对象的

储存过程嵌套临时表同名引发的BUG?

临时表使用:存储过程嵌套时,均创建了相同名称的临时表. create procedure SP_A ( @i int output )asbegin create table #t ( ta int ); insert into #t ( ta ) values ( convert(int, getdate()) ); select @i=count(0) from #t; print @i; end;gocreate procedure SP_Basbegin create table #t