1

すべてのテーブルに標準の db 列があり、そのうちの 1 つはブール値の「アクティブ」です。したがって、データを物理的に削除する代わりに、Active プロパティを false に設定するだけです。

これは、以下の関係のような関連付けプロパティを使用するときに問題を引き起こします。

User.Company.Name (Users.CompanyId -> Companies.Id)

問題の会社に Active = false のフラグが立てられている場合、Active プロパティの値が false の場合にリスト内の項目を除外する汎用ルールをデータ アクセス レイヤーに記述できますか?

現在、バニラの Linq to Sql 構成しかありません。

4

1 に答える 1

1

私は Linq-to-SQL に精通していません (EF の方が多い) が、たとえば、そのプロパティを持つすべてのクラスが共通のインターフェイスを共有している場合、これに取り組むことができると思います。次に例を示します。

public interface IHasActive
{
    bool Active { get; set; }
}

次に、拡張メソッドを実装できます。

public static class IHasActiveExtensions
{
    public static IQueryable<T> ExcludeInactive<T>(this IQueryable<T> query)
        where T : IHasActive
    {
        return query.Where(m => m.Active);
    }
}
于 2013-06-26T21:20:36.533 に答える