2014-07-22 45 views
1

我一直在淘網,但沒有發現任何有用的東西。我有一個POCO類,我想連接到Entity Framework 6.x中的存儲過程。我已經看到了如何在插入,更新和刪除的Fluent API中執行此操作,但不能用於直讀。地圖閱讀從CRUD在EF 6流利的API

我發現這個:EF 6 Code First Stored Procedure - Read Only,但它看起來只是某個控制器上的某個方法。

有沒有一種方法可以像我對其他任何實體一樣調用上下文。 I.E., ctx.Products.Where(p => p.ProductId == productId)?

+0

你的意思是ctx.Set ()? –

回答

1

我會接近這是兩種方式之一。

域/ POCO映射

如果底層的問題是你的實體框架模型POCO的和你的(大概是純粹的邏輯)域之間的不匹配,我將在EF模型直接匹配到數據庫架構,並將它們映射他們通過相應的域類型。我有一個單獨的域模型到您的EF poco's。之前由proc完成的映射工作將在域映射器內完成。

背後庫

摘要的DbContext使用與其讓消費者直接查詢的背景下,你可以抽象的實體倉庫背後的背景和SqlQuery類之間進行映射調用proc和你的POCO的存儲庫中的方法

例如這裏是一些粗糙的代碼:

public class MyEntityRepository() 
{ 
    public ICollection<MyEntity> GetAll() 
    { 
     return _myContext.SqlQuery<MyEntity>("exec myProc", params); 
    } 
} 

這兩種方法都不是快速實施並引入到你的代碼雖然。

+0

謝謝。我從第二個選項開始。我認爲這確實是唯一的解決辦法。 – Chris