2016-03-03 189 views
0

比方说,我有以下实体:实体框架:如何将实体的属性映射到存储过程?

class MyEntity 
{ 
    public int Id {get; set;} 

    public int Data {get; set;} 
} 

其中Id是主键和Data场是从存储过程检索。存储的proc根据MyEntity.Id字段来计算其结果,即,需要MyEntity.Id作为这样的参数:GetDataForMyEntity(@MyEntityId)。我正在使用EF Code First方法。我应该如何设置我的EntityTypeConfiguration以实现上述目标?

回答

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!!! 
    } 
} 
相关问题