我想添加一个新的实体到数据库已经使用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