在asp.net web api中,我使用Entity Framework与数据库进行通信。在这里,我试图更新表中的单个列。
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)在概念方面映射到EntitySet帐户的属性(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)
答案 0 :(得分:0)
实体框架设计者已将表中的所有列标识为主键,因为当我设置框架时我没有PK,所以即使我在sql server和更新模式中设置PK也会保持相同所以我必须编辑模特我的自我