我正在构建一个任务管理(日常任务管理,而不是系统任务)。
这是我的TaskListEntity
- 在此表中TaskId
是PK
public partial class TaskList
{
public int TaskId { get; set; }
public int UserID { get; set; }
public string TaskType { get; set; }
public string TaskNote { get; set; }
public string HandlerId { get; set; }
public int Priority { get; set; }
public Nullable<System.DateTime> DueDate { get; set; }
public Nullable<int> Remind { get; set; }
public string TaskSubType { get; set; }
public bool Completed { get; set; }
public string TaskDescription { get; set; }
public string HandlerId2 { get; set; }
public string HandlerId3 { get; set; }
public string HandlerId4 { get; set; }
public virtual User User { get; set; }
}
当用户勾选完成时,我想更新实例,所以我做了这个
UnitOfWork uow = new UnitOfWork();
TaskList task = uow.Tasks.GetAll().Where(t => t.TaskId == taskId).FirstOrDefault();
task.Completed = true;
uow.Tasks.Update(task);
uow.Complete();
我得到了这个奇怪的错误
System.InvalidOperationException:&#39;该属性已完成&#39;是对象的关键信息的一部分,不能修改。 &#39;
属性Completed
不是Key,甚至不是FK。我无法想到为什么会这样。我在这里错过了什么?我甚至添加了这个以查看它是否有帮助
[Key]
public int TaskId { get; set; }
只是为了确保系统将TaskId
视为主键,而不是Completed
字段。
我几个小时以来一直在和它斗争。有人可以帮助我吗?
以下是更新方法
public void Update(TEntity entity)
{
try
{
Context.Entry(entity).State = System.Data.Entity.EntityState.Modified;
}
catch (DbEntityValidationException dbEx)
{
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
Trace.TraceInformation("Class: {0}, Property: {1}, Error: {2}",
validationErrors.Entry.Entity.GetType().FullName,
validationError.PropertyName,
validationError.ErrorMessage);
}
}
}
}