フィールドName
とフィールドVersion
を持つEntities
というエンティティセットがあります。私は選択されたName
のための最高のバージョンを持つオブジェクトを返すしたいと思います。エンティティフレームワーク - 選択したエンティティからIDを選択します。
SQL賢明な私は、同様の
Select *
from table
where name = 'name' and version = (select max(version)
from table
where name = 'name')
か何かに行くと思います。 EFでそれを達成する方法がわかりません。私はCreateQuery<>
を使用して、それが役に立ちそうならクエリのテキスト表現を使用しようとしています。
おかげ
EDIT: はここに2つのクエリを使用して作業バージョンです。私が望むものではなく、非常に非効率的なようです。
var container = new TheModelContainer();
var query = container.CreateQuery<SimpleEntity>(
"SELECT VALUE i FROM SimpleEntities AS i WHERE i.Name = 'Test' ORDER BY i.Version desc");
var entity = query.Execute(MergeOption.OverwriteChanges).FirstOrDefault();
query =
container.CreateQuery<SimpleEntity>(
"SELECT VALUE i FROM SimpleEntities AS i WHERE i.Name = 'Test' AND i.Version =" + entity.Version);
var entity2 = query.Execute(MergeOption.OverwriteChanges);
Console.WriteLine(entity2.GetType().ToString());
シンプルが含まれるように
SQLクエリの同等である必要があります。ありがとう:) – Ian