我想添加一個新的實體到數據庫已經使用EF來檢索其他數據實例。我希望能使用如下代碼如下:添加到實體框架投影中創建的集合
using (var db = new FundResearchContext(null))
{
var query = from a in db.As select new
{
a = a,
bs = (from b in db.Bs where b.AnId == a.AnotherId select b)
};
var listOfAsAndRelatedBs = query.ToList();
listOfAsAndRelatedBs[0].bs.Add(new B());
db.SaveChanges();
}
雖然bs
集合中的對象進行跟蹤,並將其保存更改後,我不能添加新項目的收集,因爲它是IQueryable
類型。我意識到在這樣一個簡單的例子中,我可以將屬性放在A和B上以表示它們通過外鍵鏈接,但是這種方法在我的真實生活場景中不可行。那麼是否有一種替代語法可以使bs
本身成爲一個跟蹤對象,我可以添加新的B
對象並讓它們保持不變?或者我必須使用db.Bs.Add(new B())
手動執行所有操作嗎?
您是對的,我沒有'Bs'集合在'A'上,我可以用作導航屬性。好像我需要直接添加到'db.Bs'並跟蹤我添加到不同列表中的對象,而不是匿名投影類中的'bs'屬性。 – 2012-07-18 21:16:16