エンティティ・インスタンスが子エンティティ属性の問合せの結果としてロードされた場合、EFエンティティのすべての子エンティティをエレガントにロードする方法はありますか?ここで私が求めているものの簡単な例です:エンティティ・フレームワーク:子エンティティ属性に基づいて問合せからすべての子エンティティをリロード
まず、いくつかの単純なデータ表:
CREATE TABLE Invoices
(
InvoiceID int IDENTITY(1000,1) NOT NULL,
Customer nvarchar(50) NOT NULL,
InvoiceDate datetime NOT NULL,
CONSTRAINT PK_Invoices PRIMARY KEY (InvoiceID)
)
CREATE TABLE InvoiceItems
(
InvoiceItemID int IDENTITY(1,10) NOT NULL,
InvoiceFK int NOT NULL,
PurchasedItem varchar(24) NULL,
Quantity decimal(10,2) NULL,
ItemPrice money NULL,
CONSTRAINT PK_InvoiceItems PRIMARY KEY (InvoiceItemID),
CONSTRAINT FK_InvoiceItems_Invoice FOREIGN KEY (InvoiceFK)
REFERENCES Invoices (InvoiceID)
)
今、私たちがしたいことは、一致する請求書の項目に基づいて請求書テーブルを照会することですが、へその後、関係なく、それが基準に一致するかどうかの選択した各請求書のすべての項目を表示:
var qryOrders = from ordr in ctx.InvoiceItems
.Include("Invoice")
where ordr.PurchasedItem == "Buggy Whips"
select ordr;
foreach (var ordrItm in qryOrders)
{
Console.WriteLine("Order " + ordrItm.Invoice.InvoiceID + " contains buggy whips");
Console.WriteLine("Full contents of order:");
foreach (var itm in ordrItm.Invoice.InvoiceItems)
{
//this will only show the buggy whip item
Console.WriteLine(itm.PurchasedItem);
}
}
は私がしたいことはバギー鞭ない項目を含め、「バギー鞭」が含まれ、各注文内のすべての注文項目を表示することです。これをSQLで書いていたら、WHERE InvoiceID IN()
句をサブクエリで使用します。私の質問です:エンティティフレームワークは、これをエレガントな方法で行うことができますか?私は働くいくつかのハッキングを思いついたが、正しいことは何もない。
紛らわしい質問を正しく解釈しました。ありがとうございます! –
@Paul Keister - 本当ですか?うわー - 幸運な推測。 :) – RPM1984