2

私が対処しなければならないデータアーキテクチャでは、削除はありません。代わりに、すべてのレコードには、レコードが「無効」になったことを示すnull許容のdatetime2があります。つまり、エンティティを直接選択する場合は、エンティティが無効になっているかどうかを確認するためのチェックを常に追加する必要があります。

これまでのところ、私が思いついたのは.Enabled()、有効な行のみを取得するという単純な拡張メソッドです。これまでのところ効果があるようですが、すべての場合にそれを入力しなければならないのも面倒です。

確かに他の誰かが以前にこの猫の皮を剥いだことがあります。私が知らないEntityFrameworkでこれを行うためのより良い方法はありますか?

4

2 に答える 2

2

私はあなたがこのようなことをすることができると思います

public class MyContext : DbContext
{
    public IDbSet<Thing> Things { get; set; }
    public IQueryable<Thing> EnabledThings
    {
        get
        {
            return Things.Where(t => t.Enabled);
        }
    }
}

または拡張メソッドと同じです(ただし、コンテキストではDbSet / queriableではありません)。

個人的に実際には、私は実際にあなたがあなたの例で持っているのとまったく同じように行い、使用しますThings.Enabled().Whatever

于 2013-02-24T06:07:07.613 に答える
1

EntityFrameworkにネイティブなものは何も知りません。しかし、通常、これに遭遇すると、ほとんどのデータベーストランザクションを実行する「リポジトリ」レイヤーを作成します。次にGetAll()、「削除された」アイテムを非表示にする適切なwhereステートメントを使用してすべてのアイテムを返すようなメソッドを作成します。

于 2013-02-24T02:01:57.873 に答える