EF实体无法更新或删除

时间:2017-09-12 10:27:21

标签: c# entity-framework

我正在构建一个任务管理(日常任务管理,而不是系统任务)。

这是我的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);
                }
            }
        }


    }

0 个答案:

没有答案
相关问题