【发布时间】:2014-07-10 22:16:28
【问题描述】:
这是一种我必须以多对多关系更新单个导航属性的方法,但它对于 DAL 来说太具体了。我想知道是否有人可以帮助使此方法更通用,以便它可以处理传入的任何实体。
我会传入两个参数:要更新的实体和要修改的导航属性。
以下方法适用于多对多关系中涉及的项目表和属性表。一个项目可以分配给多个属性,一个属性可以有多个项目。
感谢您提供的任何帮助。
public void UpdateItems(Property property)
{
using (var context = new PropertyManagementDBEntities())
{
var customerInDb = context.Properties.Include("Items")
.Single(c => c.propertyId == property.propertyId);
// Remove types
foreach (var itemInDb in customerInDb.Items.ToList())
if (!property.Items.Any(t => t.itemId == itemInDb.itemId))
customerInDb.Items.Remove(itemInDb);
// Add new types
foreach (var item in property.Items)
if (!customerInDb.Items.Any(t => t.itemId == item.itemId))
{
context.Items.Attach(item);
customerInDb.Items.Add(item);
}
context.SaveChanges();
}
}
【问题讨论】:
-
对于programmers.stackexchange.com来说可能是一个更好的问题
标签: c# asp.net sql-server linq entity-framework