如何为System.Data.Linq.Table编写扩展方法?
本文关键字:扩展 方法 System Data Table Linq | 更新日期: 2023-09-27 18:12:36
我想为一些一次性测试/控制台应用程序编写这个小而琐碎的扩展方法,我还没能弄清楚如何获得方法签名正确。我希望将此添加到我拥有的每个System.Data.Linq.Table中,并且我希望它以T类型的实例作为参数。
这是我目前没有编译的
public static void InsertAndSubmit<T>(this System.Data.Linq.Table<T> tbl, T element)
{
tbl.InsertOnSubmit(element);
tbl.Context.SubmitChanges();
}
类型'T'必须是引用类型才能将其用作形参泛型类型或方法中的'TEntity'"System.Data.Linq.Table"
试试这个:
public static void InsertAndSubmit<T>(this System.Data.Linq.Table<T> tbl, T element)
where T : class
{
tbl.InsertOnSubmit(element);
tbl.Context.SubmitChanges();
}
您需要将T
的类型约束为引用类型(class
),以使此工作
如果您查看Table<TEntity>
的文档,您将注意到class
的TEntity
具有相同的类型约束。因此,要使T
与TEntity
兼容,它必须满足相同的约束。
您需要指定在T
中只使用引用类型。试一试:
public static void InsertAndSubmit<T>(this System.Data.Linq.Table<T> tbl, T element)
where T : class
{
tbl.InsertOnSubmit(element);
tbl.Context.SubmitChanges();
}