你好,LINQ2SQL得到孩子
我拿一個典型的例子,我有一個Customer
表和Purchase
表,客戶可以有幾個訂單。
我創建了一個DBML
文件,我從「服務器資源管理器窗口」既表DBML編輯下降,產生兩個實體:Customers
和Purchases
我有一些對象:
public interface IMyCustomer
{
int Id { get; set; }
string Code { get; set; }
string Firstname { get; set; }
string Lastname { get; set; }
List<IMyPurchase> Purchases { get; set; }
}
public class MyCustomer : IMyCustomer
{
public int Id { get; set; }
public string Code { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public List<IMyPurchase> Orders { get; set; }
}
public interface IMyPurchase
{
int Id { get; set; }
string Code { get; set; }
DateTime CreationDate { get; set; }
}
public class MyPurchase : IMyPurchase
{
public int Id { get; set; }
public string Code { get; set; }
public DateTime CreationDate { get; set; }
}
var result =
from customer in _dataContext.Customers
join order in _dataContext.Purchases on customer.Id equals order.IdCustomer
select new MyCustomer
{
Code = customer.Code,
Firstname = customer.Firstname,
Lastname = customer.Lastname,
Id = customer.Id,
Purchases = _dataContext.Purchases
.Select(x => x.IdCustomer == customer.Id)
.Cast<IMyPurchase>()
.ToList<IMyPurchase>()
};
的LINQ查詢工作。對於輸入結果,我有關於customer
的所有信息,我有Purchases
中的正確行數,但Purchases
的每個條目的每個屬性均爲null。我想加載Customer
信息和全部purchase
任何想法?
感謝,
我有很多往返到數據庫中的客戶ID,每次購買我有一個往返,不可能避免這種情況? –
@Johnn Blade使用的連接只會查詢一次。而不是像他的例子那樣選擇一個新的匿名類型,只需使用與我的答案中相同的選擇機制,而不是引用'_dataContext.Purchases'來使用聯合的ObjectSet。 – lukiffer