【发布时间】:2015-07-31 19:42:45
【问题描述】:
我有一个实体Person,它有一个相关的实体Hobby。这是一个多对多的关系,一个人可以有几个爱好,一个爱好可以与很多人相关联。我想创建一个ViewModel,它允许添加新的爱好和/或从给定的 Person 实体中删除现有的爱好。
下面的代码有效,但我想它效率很低。
var newHobbies = new List<Hobby>();
foreach (Hobby hobby in vm.Hobbies)
{
var originalHobby = db.Hobbies.Find(hobby.HobbyID);
newHobbies.Add(originalHobby);
}
originalPerson.Hobbies = newHobbies;
我更喜欢这样做:
var newHobbies = db.Hobbies.Where(x => vm.Hobbies.All(y => x.HobbyID == y.HobbyID)).ToList();
originalPerson.Hobbies = newHobbies;
但我得到一个错误:
这里只支持原始类型或枚举类型 上下文。
如何在不多次访问数据库的情况下更新相关数据?
【问题讨论】:
-
'我想它效率很低':一个人可能有多少爱好?以难以察觉的方式减少执行时间并不值得让代码更加晦涩难懂。
-
好点。可能不超过 10 个。一天中只有这么多时间。
标签: c# asp.net-mvc entity-framework entity-framework-6