Посмотри на мой код
using (MyBridgeContext context = new MyBridgeContext())
{
context.Users.Attach(user); //both working fine
context.Orders.Attach(order);
foreach (Defect def in defectList.Items)
{
if (defectList.SelectedItem == def)
{
context.Defects.Attach(def);//throwing error
defect = def;
}
}
DefectEntry entry = new DefectEntry();
entry.user = user;
entry.defect = defect;
entry.order = order;
entry.dt = DateTime.Now;
context.Entries.Add(entry);
context.SaveChanges();
this.Content = new MainMonitoring(ref order, ref user);
} <br />
Когда я присоединяю пользователя и порядок, он отлично работает, даже если такие объекты с их первичным ключом существуют в базе данных (это причина, по которой я присоединяюсь, я не собираюсь создавать новый объект)просто прикрепите его к входу).Но когда я пытаюсь прикрепить дефект, он выдает ошибку System.InvalidOperationException
.Итак, это комбинированный список дефектов: (Программа загружает список дефектов, и когда пользователь выбирает его, он должен быть присоединен к записи):
private void loadDefects()
{
MyRepository rep = new MyRepository();
var defects = rep.GetDefects();
foreach(var def in defects)
{
defectList.Items.Add(def);
}
defectList.DisplayMemberPath = "Name"; //defectList is comboBox
} <br /> <br />
Итак, это MyRepository:
public class MyRepository
{
public List<Defect> GetDefects()
{
MyBridgeContext context = new MyBridgeContext();
return context.Defects.AsNoTracking().ToList(); //AsNoTracking doing nothing
}
public List<User> GetUsers()
{
MyBridgeContext context = new MyBridgeContext();
return context.Users.AsNoTracking().ToList();
}
public List<Order> GetOrders()
{
MyBridgeContext context = new MyBridgeContext();
return context.Orders.AsNoTracking().ToList();
}
}