エンティティからサブエンティティを削除できる汎用メソッドを作成する方法がわかりません。
例:
context.Set<ARC_Records>().Local[0].ARC_Addendum.Remove(object);
ARC_Records
私はジェネリックになりたいARC_Addendum
ので、このメソッドはすべての場合に使用できます。どんなアイデアでも、私はこれが行われたと確信しています.C#のジェネリックに精通していません.
エンティティからサブエンティティを削除できる汎用メソッドを作成する方法がわかりません。
例:
context.Set<ARC_Records>().Local[0].ARC_Addendum.Remove(object);
ARC_Records
私はジェネリックになりたいARC_Addendum
ので、このメソッドはすべての場合に使用できます。どんなアイデアでも、私はこれが行われたと確信しています.C#のジェネリックに精通していません.
確かに、通常のメソッドからジェネリック メソッドを作成できます。適切な制約を設定する必要があります (ジェネリックの使用が無意味になることがよくあります)。この特定のケースでは、ローカルの ARC_Records エンティティから ARC_Addendum コレクションを選択する一般的な方法が必要です。これは Func デリゲートを介して行うことができます
public static void WeirdMehod<TOne, TMany>(this DbContext context,
Func<TOne, ICollection<TMany>> collectionSelector, TMany item)
where TOne : class
{
collectionSelector(context.Set<TOne>().Local[0]).Remove(item);
}
使用法:
context.WeirdMethod<ARC_Record, ARC_Addendum>(r => r.ARC_Addendum, obj);
これを DbSet の拡張として作成する場合、型は使用法から推測できます。
db.Set<ARC_Record>().WeirdMehod(r => r.ARC_Addendum, obj);
しかし、ここではジェネリックを使用しても何のメリットもありません。このロジックは、私には一般化の候補とは思えません。