任何人都可以告訴我他們如何實現使用功能導入時使用對EF 4.0存儲庫模式?使用實體框架4.0功能導入和存儲庫模式
我們有一個映射到候選實體的表格,還有一個映射到候選者的現有存根的功能導入。這在EF中非常適用,但我們通過使用存儲庫進行抽象,這些存儲庫採用其構造函數IObjectSet,其中T是POCO實體。但是這意味着我無法獲得對函數導入的引用。我能看到做這件事的唯一方法是將對ObjectContext的引用傳遞給需要它的存儲庫,但這對我來說有點像設計氣味。
即使我們的幾個存儲庫使用自定義接口進行擴展,我們仍面臨同樣的問題。
public class CandidateRepository : Repository<Candidate>, ICandidateRepository
{
public CandidateRepository(IObjectSet<Candidate> entities)
: base(entities)
{
}
public Candidate GetByEmail(string email)
{
return Entities.SingleOrDefault(c => c.EmailAddress.Equals(email));
}
public bool CandidateExists(string candidateNumber)
{
return Entities.SingleOrDefault(c => c.Number.Equals(candidateNumber)) != null;
}
public Candidate GetByNumber(string number)
{
return Entities.SingleOrDefault(c => c.Number.Equals(number));
}
public Candidate GetMember(string number)
{
return new Candidate(); //This one needs to return from the Function Import
}
}
任何建議非常感謝。
感謝您的反饋Yury。您是否會善意闡述您對「聚合根源」的定義?我們沒有進入開發階段,我們無法重構更好的可擴展性。 – 2010-06-29 14:54:56
那麼,「聚合根」是域驅動設計(DDD)的概念。考慮一個簡單的Order 1 .. * OrderLine模型。通常情況下,您不會創建OrderLine,因此您只需要OrderRepository。因此Order是一個持有對OrderLines的引用的聚合根。 定義聚合根是一個實際的DDD問題,它取決於您試圖在應用程序中「建模」的對象。 – 2010-06-29 15:23:24