0

私のmvvmプロジェクトには、追加、更新、削除インターフェイスを含む1つのインターフェイスがあります。したがって、インターフェイスはデータアクセスレイヤーです。そのコードは次のとおりです。

public interface IAccountDataSource
{
    bool Add(Account account);
    bool Update(Account account);
    bool Remove(Account account);

    Account GetById(int id);
    Account GetByName(string name);
    IEnumerable<Account> GetByCategory(AccountCategory accountCategory);
    IEnumerable<Account> GetBySearchTerm(string searchTerm);
    IEnumerable<Account> GetAll();

    event EventHandler<ObjectAddedEventArgs> AccountAdded;
    event EventHandler<ObjectUpdatedEventArgs> AccountUpdated;
    event EventHandler<ObjectRemovedEventArgs> AccountRemoved;
}
enter code here

データ アクセス レイヤーが ORM を意味するかどうかはわかりません。データ アクセス レイヤーの利点は何ですか?

4

2 に答える 2

1

いいえ。ここで示しているのは、ある種のRepositoryです。リポジトリは通常 (常にではありません)、オブジェクトを SQL クエリに (またはその逆に) 変換する ORM (オブジェクト リレーショナル マッパー) と対話します。

利点は何ですか:

データ アクセス レイヤーを介してのみデータベースにクエリを実行するようになったので、単体テスト用のモック オブジェクトまたはスタブ オブジェクトで (インターフェイスを実装/モックすることにより) レイヤーを置き換えることができます。このようにして、スタブ/モックは実際には何もしないため、データベースに実際に何かを書き込むことなくテストを実行できます。もう 1 つの利点は、すべてのデータ アクセス コードが 1 か所にあるため、データ ソースを別のデータ ソースに置き換える (つまり、リレーショナル データベースから NoSQL に移行する) ことが容易になることです。

于 2012-05-21T23:24:59.867 に答える
0

データ アクセス レイヤーを使用すると、データにアクセスする方法の実装を抽象化できます。データ アクセス レイヤーは、データが格納されている場所 (データベース、ファイル システムなど) によって異なります。

データベースに格納されたデータをある種のオブジェクト セットにマップする場合は、ORM (オブジェクト リレーショナル マッパー) を使用してデータ アクセス レイヤーを実装できます。

そうは言っても、あなたのインターフェースはリポジトリ パターン アプローチを実施しているように見えます。

于 2012-05-21T23:29:55.187 に答える