2016-07-21 4 views
2

私のアプリケーションを3つのレイヤー(データレイヤー、ドメインレイヤー、プレゼンテーションレイヤー)に分割しようとしています。 データレイヤーがORM(XPO DevExpress)を使用しています。 ドメインのレイヤは、データベーステクノロジまたはORMテクノロジに関して100%の不可知論者です。 データレイヤーとドメインレイヤーはIRepositoryインターフェースで分離されています。ORMのアーキテクチャと使用方法

public interface IRepository<T> 
{ 
    void Insert(T entity); 
    void Delete(T entity); 
    IQueryable<T> GetAll(); 
    T GetById(int id); 
} 

プレゼンテーションレイヤーには、グリッドコントロールと3つのボタン(追加、変更、削除)を含むフォームがあります。

私の最初の質問です:?私が追加したときに、グリッドコントロールの更新をしたり、すべてのデータをリロードせずにデータベースからレコードを削除する方法(変更通知)

2番目の質問は次のとおりです。電源を使用する方法私のドメイン層にそれを不可知論的にさせます。

答えて

0

すべてのデータを再読み込みせずにデータベースにレコードを追加または削除すると、グリッドコントロールが更新されます(変更通知)。

ドメインイベントとイベントアグリゲータを考慮してください。 ORMの電源を使用し、同じ時間での私のドメイン層はとらわれないようにする方法を

public class ThingCreatedEvent : DomainEvent 
{ 
    public int NewThingId; 
} 

...?

あなたのデータ層のこのやって:

public class XpoRepository<T> : IRepository<T> 
{ 
} 
+0

はどこXpoRepository を置くことを?ドメインレイヤーに配置すると、ドメインレイヤーはXPO ORMを使用していることを認識しています。私は自分のドメインが無関心であることを望みます。(Clean architecture) –

+0

確か。インターフェイスは、ドメインレイヤまたは別のデータインターフェイスレイヤに存在できますが、実装はドメインレイヤとそのインターフェイスを参照する実装固有のアセンブリになります。 YourApp.Data.XpoやYourApp.Data.EntityFrameworkのようなもの。 –

+0

'クリーン'アーキテクチャは、六角形/ポートとアダプタの同義語です。 XPOの実装は、データアクセスポートに接続できるアダプタです。 –

関連する問題