如何为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"

如何为System.Data.Linq.Table<T>编写扩展方法?

试试这个:

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>的文档,您将注意到classTEntity具有相同的类型约束。因此,要使TTEntity兼容,它必须满足相同的约束。

您需要指定在T中只使用引用类型。试一试:

public static void InsertAndSubmit<T>(this System.Data.Linq.Table<T> tbl, T element) 
    where T : class
{
    tbl.InsertOnSubmit(element);
    tbl.Context.SubmitChanges();
}