0

我无法弄清楚如何创建一个允许我从实体中删除子实体的通用方法。

例子:

context.Set<ARC_Records>().Local[0].ARC_Addendum.Remove(object);

我想成为泛型ARC_RecordsARC_Addendum所以这个方法可以在所有情况下使用。任何想法,我确信这已经完成,我只是不太熟悉 C# 中的泛型。

4

1 回答 1

0

当然,您可以从任何普通方法创建泛型方法。您只需要设置适当的约束(这通常会使泛型的使用变得毫无意义)。在这种特殊情况下,您需要从本地 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);

但我没有看到这里使用泛型有任何好处。这个逻辑对我来说似乎不是泛化的候选者。

于 2013-10-01T07:19:38.577 回答