C# 实体框架:如何映射实体';存储过程的属性?
假设我有以下实体:C# 实体框架:如何映射实体';存储过程的属性?,c#,entity-framework,entity-framework-6,C#,Entity Framework,Entity Framework 6,假设我有以下实体: class MyEntity { public int Id {get; set;} public int Data {get; set;} } 其中,Id是主键,Data字段从存储的进程中检索。存储的进程根据MyEntity.Id字段计算其结果,即它将MyEntity.Id作为如下参数:GetDataForMyEntity(@MyEntityId)。我使用EF代码优先的方法。我应该如何设置EntityTypeConfiguration以实现上述目标?如果
class MyEntity
{
public int Id {get; set;}
public int Data {get; set;}
}
其中,
Id
是主键,Data
字段从存储的进程中检索。存储的进程根据MyEntity.Id
字段计算其结果,即它将MyEntity.Id
作为如下参数:GetDataForMyEntity(@MyEntityId)
。我使用EF代码优先的方法。我应该如何设置EntityTypeConfiguration以实现上述目标?如果我正确理解了您的问题,那么MyEntity
不是一个实体(它不保存在数据库中),它表示需要使用存储过程计算的数据
您的代码应该如下所示:
class MyEntity
{
public int Id {get; set;}
public int Data {
get {
using(var context = new DatabaseContext())
{
var idParam = new SqlParameter("@MyEntityId", Id);
return context.Database
.SqlQuery<int>("GetDataForMyEntity @MyEntityId", idParam).SingleOrDefault();
}
};
// Data should not have a setter!!!
}
}
类MyEntity
{
公共int Id{get;set;}
公共整数数据{
得到{
使用(var context=new DatabaseContext())
{
var idParam=new-SqlParameter(“@MyEntityId”,Id);
返回context.Database
.SqlQuery(“GetDataForMyEntity@MyEntityId”,idParam).SingleOrDefault();
}
};
//数据不应该有setter!!!
}
}
请参见第页的标题“导入返回实体的存储过程”