ASP.net MVC错误:当IDENTITY_INSERT设置为OFF

时间:2017-02-08 20:27:02

标签: c# asp.net entity-framework

在更改了我的模型之后和更新数据库之前,从db中删除了我的一个表后,我收到此错误。然后,我必须删除并重新创建迁移文件,并从db中删除迁移历史记录。现在当我尝试在db中创建一个新公司时,即使我没有显式添加主键值,也会出现此错误。我浪费了几个小时试图了解发生了什么,并为此错误阅读解决方案,但没有一个对我有用。这之前有效。请帮忙!

模特:

public class Company
{

    public int CompanyId { get; set; }

 //....other properties of the company follows here....
    public virtual ICollection<Role> Roles { get; set; }
    public virtual ICollection<Employee> Employees { get; set; }
 }

在控制器中:

public ActionResult Create([Bind(Include = "Name,Address,PhoneNo,Email")] Company company)
    {
        if (ModelState.IsValid)
        {
            db.Companies.Add(company);
            db.SaveChanges();
            return RedirectToAction("Index", "CompaniesRolesMV");
        }

        return View(company);
    }

更新:我忘了提到我有两个从公司到角色和员工的一对多关系。添加了流畅的API以使用模型构建器设置DELETE ON CASCADE false。尝试了你的评论中的所有建议,我非常感谢你。我现在有另一个错误:

无法将值NULL插入“CompanyId”列,表'aspnet-DevEnvExamProject-20161213094625.dbo.Companies';列不允许空值。 INSERT失败。 声明已经终止。

调试它,并将Create方法中的公司对象添加0到CompanyId属性。我强迫它取值1,同样的错误!

2 个答案:

答案 0 :(得分:0)

将我的所有代码移动到一个新项目,“神奇地”问题已经消失。谢谢大家的帮助和建议!

之后我发现了问题的原因,就像帕维梅告诉我的那样。

答案 1 :(得分:0)

如果您在表上进行更改时“首先使用数据库中的代码”模式,并且想要应用它而不替换所有代码 您可以删除Models.[DBContext]并使用相同的Models.[DBContext]名称创建另一个。

相关问题