我有两个对象(对象A和对象B)。他们有很多关系。
我正在使用通用数据访问层来执行此操作:
public virtual void Save(params T[] items)
{
var keyName = GetIdKeyName<T>();
foreach (T item in items.Where(GetByIdPredicate<T>(0, keyName).Compile()))
{
db.Entry(item).State = EntityState.Added;
}
foreach (T item in items.Where(GetByIdPredicate<T>(0, keyName, ExpressionType.NotEqual).Compile()))
{
db.Entry(item).State = EntityState.Modified;
}
db.SaveChanges();
}
我想保存对象A和对象B之间的关系。如果我这样做:
ObjectA.ObjectBs.Add(ObjectB)
dataAccess.Save(ObjectA)
生成了多对多关系,但它创建了一个新的ObjectB。我认为这是因为它没有更新的实体状态,所以我尝试了:
dataAccess.Save(ObjectB)
ObjectA.ObjectBs.Add(ObjectB)
dataAccess.Save(ObjectA)
但同样的事情发生了。关于我如何解决这个问题的任何想法?
答案 0 :(得分:0)
我发现了我的问题。我正在为每个对象创建一个数据访问实例。因此,当DataAccess保存时,它不知道DataAccess。我更改了访问层,因此方法采用了一种类型,一切都很好。