私はPOCOを使ってプロトタイプのEFアプリケーションを開発しています。主にフレームワークの紹介として、私は素敵な構造でアプリケーションを設定する良い方法について疑問に思っています。その後、WCFを組み込む予定です。私がやった何EFアプリケーションの構造を設定する
は以下の通りです:
1)私はEDMXファイルを作成しますが、コード生成プロパティをNoneに設定し、自分のデータベーススキーマを生成し、
2)私はPOCOSを作成しましたこれはすべて、次のようになります。私は、コンテキストを作成し
public class Person
{
public Person()
{
}
public Person(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
3)
public class PocoContext : ObjectContext, IPocoContext
{
private IObjectSet<Person> persons;
public PocoContext() : base("name=PocoContainer", "PocoContainer")
{
ContextOptions.LazyLoadingEnabled = true;
persons= CreateObjectSet<Person>();
}
public IObjectSet<Person> Persons
{
get
{
return persons;
}
}
public int Save()
{
return base.SaveChanges();
}
}
public interface IPocoContext
{
IObjectSet<Person> Persons { get; }
int Save();
}
4)最後に、私はインターフェイスを実装し、リポジトリを作成しました:私はこれで遊んで取得するとき
public class PersonRepository : IEntityRepository<Person>
{
private IPocoContext context;
public PersonRepository()
{
context = new PocoContext();
}
public PersonRepository(IPocoContext context)
{
this.context = context;
}
// other methods from IEntityRepository<T>
}
public interface IEntityRepository<T>
{
void Add(T entity);
List<T> GetAll();
T GetById(int id);
void Delete(T entity);
}
は今、この設計はインスタンス化するために私に指示インタフェースは次のようになりますリポジトリ私はこのように、いくつかのデータをフェッチまたは変異させたいたび:どういうわけか
using (var context = new PocoContext())
{
PersonRepository prep = new PersonRepository();
List<Person> pers = prep.GetAll();
}
これはただ単にド内のすべてのリポジトリをインスタンス化し、一方で、間違っていると感じている欠陥私が必要としない可能性のあるオブジェクトをインスタンス化する可能性があるため、脈絡されたコンテキストはあまりにも良くないと感じません。
どのようにこのデザインのサウンドを作成するためのヒント?私はそれをこのようにしておくべきですか?これを行うときに一般的に追加または拒否すべき事項はありますか?
どのようなアプリケーションですか。 Webサービス、WPF-app、他に何か? – alun
この状態ではコンソールアプリケーションです。最小限のプロトタイプしかないからです。 – duress
私が尋ねる理由は、あなたのコンテキストをどのように扱うかは、アプリケーションの種類によって大きく左右されます。たとえば、wpfアプリケーションではフォームごとに1つのコンテキストを、Webアプリケーションではhttp-requestごとに1つのコンテキストを、Webサービスではメソッド呼び出しごとに1つのコンテキストを持つことが一般的です。 – alun