我正在使用 Linq to SQL 来操作和 MS Access 数据库。
为了加快批量修改,我发现使用数据上下文直接执行查询更有效,就像这样context.ExecutCommand("DELETE FROM [MyTable];")
。为了提高效率,我想将此作为扩展方法,但我不知道如何从上下文中检索表名......
我知道我可以将表名作为硬编码字符串传递,例如:
public static void DeleteAll(this Table<TEntity> MyTable)
{
string tableName = // retrieve MyTable's name
MyTable.Context.ExecuteCommand(string.Format("DELETE FROM [{0}];", tableName));
}
我有一些方法可以获取表名,但需要一些帮助才能使 thsi 正常工作。到目前为止,我有:
var tableName = dc.MyTables.Context.GetTable(typeof(MyTable)).ElementType.Name;
但是无法弄清楚如何检索实体的类型,MyTables
以便不必对参数进行硬编码.GetTable()
并使它可用于我传入的任何表。
C# 或 VB 中的任何答案都可以。谢谢。
编辑
总结一下我正在寻找的是一种从表本身获取表的实体类型的方法。像Context.MyTable.GetEntityType()
......如果它那么容易。