Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C/Entity框架中删除子实体的通用方法_C#_Entity Framework_Generics_Entity - Fatal编程技术网

C# C/Entity框架中删除子实体的通用方法

C# C/Entity框架中删除子实体的通用方法,c#,entity-framework,generics,entity,C#,Entity Framework,Generics,Entity,我不知道如何创建一个允许我从实体中删除子实体的通用方法 例如: 我希望ARC_记录和ARC_附录是泛型的,所以这种方法可以在所有情况下使用。任何想法,我确信这已经完成,我只是不太熟悉C中的泛型。确定您可以从任何普通方法创建泛型方法。您应该设置适当的约束,这通常会使泛型的使用变得毫无意义。在这种特殊情况下,您需要通用的方法从本地ARC_记录实体中选择ARC_附录集合。这可以通过Func委托完成 public static void WeirdMehod<TOne, TMany>(thi

我不知道如何创建一个允许我从实体中删除子实体的通用方法

例如:


我希望ARC_记录和ARC_附录是泛型的,所以这种方法可以在所有情况下使用。任何想法,我确信这已经完成,我只是不太熟悉C中的泛型。

确定您可以从任何普通方法创建泛型方法。您应该设置适当的约束,这通常会使泛型的使用变得毫无意义。在这种特殊情况下,您需要通用的方法从本地ARC_记录实体中选择ARC_附录集合。这可以通过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);

但我看不到泛型的使用有什么好处。对我来说,这种逻辑似乎不适合泛化。

使用ON DELETE CASCADE创建外键对你来说是解决方案吗?不,我需要保留原始实体,只删除一个特定的子实体。我不太确定你在问什么。ARC_附录和ARC_记录有何关联?ARC_Addendum是否有一个明确的removeobject方法,它是从基类继承的吗?ARC_记录和ARC_Addendum是实体框架对象,所以我认为它们是从DBset继承的。ARC_记录和ARC_加法之间存在1对多关系。公共数据库集弧_附录{get;set;}公共数据库集记录{get;set;}
db.Set<ARC_Record>().WeirdMehod(r => r.ARC_Addendum, obj);