3
每当我尝试更新我的某个模型时,都会出现此错误。更新很简单:无法附加已存在的实体
Todo bn = service.GetTodos().Single(t => t.todoId == 1);
bn.Note.noteTitle = "Something new";
service.SaveTodo(bn);
而且车型有这种结构:
- 待办事项有备注
- 待办事项有任务
我的列表我的服务的SaveTodo看起来有点像这样:
public void SaveTodo (TodoWrapper note)
{
using (Repository repo = new Repository(new HpstrDataContext()))
{
if (note != null)
{
Todo todo = repo.Todos.SingleOrDefault(t => t.todoId == note.todoId);
if (todo == null)
{
todo = new Todo();
todo.Note = new Note();
}
todo.dueDate = note.dueDate;
todo.priority = (short)note.priority;
todo.Note.isTrashed = note.Note.isTrashed;
todo.Note.permission = (short)note.Note.permission;
todo.Note.noteTitle = note.Note.noteTitle;
repo.SaveTodo(todo);
}
}
}
和存储库的SaveTodo方法很简单,看起来像这样:
public void SaveTodo (Todo todo)
{
if (todo.Note.noteId == 0)
{
dc.NoteTable.InsertOnSubmit(todo.Note);
} else
{
dc.NoteTable.Attach(todo.Note);
dc.NoteTable.Context.Refresh(RefreshMode.KeepCurrentValues , todo.Note);
}
if (todo.todoId == 0)
{
dc.TodoTable.InsertOnSubmit(todo);
} else
{
dc.TodoTable.Attach(todo);
dc.TodoTable.Context.Refresh(RefreshMode.KeepCurrentValues , todo);
}
dc.SubmitChanges();
}
误差以这条线在库被抛出:dc.NoteTable.Attach(todo.Note);
。我已经尝试了很多不同的东西来使这个工作,但似乎没有任何工作。
任何帮助,将不胜感激