2016-03-03 186 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!!! 
    } 
} 
相關問題