【问题标题】:Entity Framework cannot update a column; getting System.Data.EntityCommandCompilationException实体框架无法更新列;获取 System.Data.EntityCommandCompilationException
【发布时间】:2014-08-27 16:25:27
【问题描述】:

在 asp.net web api 中,我使用实体框架与数据库进行通信。在这里,我试图更新表中的单个列。

public HttpResponseMessage ActivateAccount(string activation_code, string userMail)
{
   if (!string.IsNullOrWhiteSpace(activation_code) && !string.IsNullOrWhiteSpace(userMail))
   {
      Account activateAcc =  db.Accounts.Where(user => user.AccMail == userMail && user.ConfirmToken == activation_code).SingleOrDefault();

      if (activateAcc != null)
      {
         activateAcc.IsActive = true;
         db.SaveChanges();
         return Request.CreateResponse(HttpStatusCode.Accepted, "account activated");
      }
      else
      {
         return Request.CreateResponse(HttpStatusCode.NotAcceptable, "invalid account");
      }
   }
   else
   {
      return Request.CreateResponse(HttpStatusCode.NoContent, "missing user Mail or activation code");
   }
}

但是在那个声明中

Account activateAcc =  db.Accounts.Where(user => user.AccMail == userMail && user.ConfirmToken == activation_code).SingleOrDefault();

我得到了 System.Data.EntityCommandCompilationException 类型的异常,内部异常

错误 3002:从第 6 行开始映射片段时出现问题:表帐户键 (Account.AccID) 的潜在运行时违规:列 (Account.AccID) 在概念方面映射到实体集帐户的属性 (Accounts.AccID),但它们不构成 EntitySet 的关键属性(Accounts.AccID、Accounts.AccMail、Accounts.AccName、Accounts.AccPassword、Accounts.IsActive、Accounts.IsAdmin)。\r\n\r\nAccPlusModel.msl(19,10) :错误 3002:从第 19 行开始映射片段时出现问题:表 TansactionCategory 的键 (TansactionCategory.CatID) 的潜在运行时违规:列 (TansactionCategory.CatID) 在概念方面映射到 EntitySet TansactionCategories 的属性 (TansactionCategories.CatID),但它们没有形成 EntitySet 的关键属性(TansactionCategories.CatAccount、TansactionCategories.CatColor、TansactionCategories.CatID、TansactionCategories.CatName)

【问题讨论】:

    标签: c# asp.net entity-framework entity-framework-4 entity-framework-5


    【解决方案1】:

    实体框架设计者已将表中的所有列标识为主键,当我设置框架时,我没有 PK,所以即使我在 sql server 和更新模式中设置 PK,它也会保持不变,所以我必须编辑模型我的自我

    【讨论】:

    • 也许再次删除和创建模型会更快
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多