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));
}
テーブル名を取得する方法はありますが、これを機能させるには助けが必要です。これまでのところ、私は持っています:
var tableName = dc.MyTables.Context.GetTable(typeof(MyTable)).ElementType.Name;
しかし、エンティティのタイプを取得する方法がわかりません。これMyTables
により、引数をハードコーディングする必要がなくなり、.GetTable()
渡したテーブルでこれを使用できるようになります。
C# または VB での回答は問題ありません。ありがとう。
編集
私が探しているものを要約すると、テーブル自体からテーブルのエンティティ型を取得する方法です。みたいなContext.MyTable.GetEntityType()
... そんなに簡単だったらいいのに。