EF 4.0 に対してリポジトリ パターンを使用する際に、関数インポートの使用をどのように実装したかについて、誰かアドバイスしてもらえますか?
候補エンティティにマップされたテーブルと、候補にマップされた既存の sproc からの関数インポートもあります。これは EF でうまく機能しますが、T が POCO エンティティである IObjectSet のコンストラクターを取るリポジトリを使用して抽象化しています。ただし、これは関数インポートへの参照を取得できないことを意味します。これを実行する唯一の方法は、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
}
}
アドバイスをいただければ幸いです。