实体框架:如何将实体的属性映射到存储过程?

时间:2016-03-03 06:03:33

标签: 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 Code First方法。我应该如何设置我的EntityTypeConfiguration以便实现上述目标?

2 个答案:

答案 0 :(得分:0)

如果我正确理解了你的问题,那么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!!!
    }
}

答案 1 :(得分:0)

请参阅https://msdn.microsoft.com/en-us/data/gg699321.aspx

标题“导入返回实体的存储过程”标题