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!!!
}
}
请参见第页的标题“导入返回实体的存储过程”