1

EntityKey に基づいてデータベースにクエリを実行したいのですが、これを行うためのビルド (またはより簡単な方法) はありますか?

私の現在のアプローチは、次のようになります。

using (var context = new DbContext())
{
    context.DataBase.SqlQuery<TestTable>("select * from @p0 where @p1 = @p2", EntityKey.EntitySetName, EntityKey.EntityKeyValues[0].Name, EntityKey.EntityKeyValues[0].Value);
}

(このソリューションには現在、EntitySetName が TableName ではなく、データベースとは異なる可能性がある Id の名前と同じように、MetaData から TableName を取得する必要があるという問題があります)

それともLINQでこれを行う方法さえありますか? (手動で翻訳する必要がないので、私はそれを好みます)

4

2 に答える 2

1

取得するエンティティのタイプがわかっている場合は、SetDbContext のメソッドを使用して を取得し、 onDbSetFindメソッドを使用DbSetしてキーでエンティティを取得できます。

var dbSet = dbContext.Set<TestTable>();
var entity = dbSet.Find(EntityKey.EntityKeyValues[0].Value);

このFindメソッドは、キー値を使用してエンティティを取得する方法を知っています。実際、署名はFind(params object[])、テーブルに複合キーがある場合に複数のキー値を渡すことができるようにするためのものです (それらが正しい順序である限り)。

于 2014-01-02T13:34:43.777 に答える