映射列异常实体框架MVC#

映射列异常实体框架MVC#,c#,asp.net-mvc,entity-framework,model-view-controller,C#,Asp.net Mvc,Entity Framework,Model View Controller,我正在使用ASP.NET MVC 5.2.3和EF 6.1.3尝试实现一个管理通用实体的通用控制器。 这是控制器 TemplateController.cs 公共类TemplateController:控制器,其中tenty:TemplateEntity { 受保护的数据库上下文数据库; 公共模板控制器() { } 公共TemplateController(DbContext\u db) { db=_db; } 公共行动结果详细信息(int?id) { if(id==null) { 返回新的H

我正在使用ASP.NET MVC 5.2.3和EF 6.1.3尝试实现一个管理通用实体的通用控制器。 这是控制器

TemplateController.cs

公共类TemplateController:控制器,其中tenty:TemplateEntity
{
受保护的数据库上下文数据库;
公共模板控制器()
{
}
公共TemplateController(DbContext\u db)
{
db=_db;
}
公共行动结果详细信息(int?id)
{
if(id==null)
{
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
如果(id!=null)
{
//这很有效
//TEntity tEntityDb=db.Set().Find(id);
//这不管用
TEntity tEntityDb=db.Set(),其中(t=>t.Id==Id.FirstOrDefault();
if(tEntityDb==null)
{
返回HttpNotFound();
}
返回视图(“细节”,tEntityDb);
}
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
//等等
}
这是通用实体TemplateEntity

TemplateEntity.cs

公共类TemplateEntity
{
公共int Id{get;set;}
公共模板实体()
{}
}
然后在我的模型中,每个实体类都派生自TemplateEntity。现在我有一个特定的实体,叫做task_h,如下所示

任务\u hExt.cs

public分部类任务\u h:TemplateEntity
{
[列(“id_任务”)]
公共新整数Id
{
获取{return id_task;}
设置
{
Id=Id\u任务;
}
}
}
任务\u h.cs

public分部类任务\u h:TemplateEntity
{
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,“CA2214:DoNotCallOverridableMethodsInConstructors”)]
公共任务_h()
{
this.task_d=new HashSet();
this.Id=Id\u任务;
}
公共int id_任务{get;set;}
公共字符串说明{get;set;}
//其他属性
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,“CA2227:CollectionPropertiesShouldBreadOnly”)]
公共虚拟ICollection任务{get;set;}
}
基本上,task_h.cs首先由脚手架数据库生成

特定控制器仅从TemplateController继承

任务\u hController.cs

公共类任务\u hController:TemplateController
{
公共任务控制器()
{
this.db=新的DBEntities();
}
受保护的覆盖无效处置(布尔处置)
{
如果(处置)
{
db.Dispose();
}
基地。处置(处置);
}
}
问题就在这方面

TEntity tEntityDb=db.Set().Where(t=>t.Id==Id.FirstOrDefault();
这将导致System.NotSupportedException与消息一起出现

LINQ to实体中不支持指定的类型成员“Id”。仅支持初始值设定项、实体成员和实体导航属性


数据库上的task_h表中不存在Id列,但存在Id_task列。正如您所见,我在task_hExt.cs中尝试了column属性[column(“id_task”)],但没有成功。我还尝试了System.Data.Linq.Mapping中的列属性,但这不起作用。感谢您的帮助!谢谢

一般来说,隐藏基类属性不是一个好主意,尤其是对于EF实体模型。@IvanStoev谢谢你Ivan,你有什么建议作为替代?代码优先还是edmx?数据库已经存在,所以edmxI知道如何使用代码优先的方法(顺便说一句,这并不排除现有的数据库方案-名称有点误导)。但edmx不是我的知识领域,希望其他人能帮助你。祝你好运。