rsa*_*lit 1 .net c# generics entity-framework c#-4.0
我确信这是非常基本的,但我在构建泛型方法时遇到了麻烦.我在我的声明众多接口DBContext类(IDbSet<Person>,IDbSet<Organizations>,等).我想将它们传递给一个处理它们的方法.在这种情况下,删除记录.这是我试图做的,但我无法弄清楚如何创建方法签名.
private static void EmptyTable<T>(ContactContext context, T records)
{
foreach (var record in records)
{
records.Remove(record);
}
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是你有2种泛型类型.一个是集合类型,另一个是集合包含的元素的类型.
我建议你改变你的签名
private static void EmptyTable<T>(ContactContext context, IDbSet<T> records)
Run Code Online (Sandbox Code Playgroud)
这是最简单的方法.否则你将需要做一些更奢侈的事情
private static void EmptyTable<T,E>(ContactContext context, T records)
where T : IDbSet<E>
Run Code Online (Sandbox Code Playgroud)
顺便ICollection<T>说一下,原因是它是暴露Remove方法的最简单的接口,而IDbSet实现了我想要的接口.
原来IDbSet没有实现ICollection,所以...你将不得不使用IDbSet
| 归档时间: |
|
| 查看次数: |
235 次 |
| 最近记录: |