2017-08-11 95 views
-1

我正在研究ASP.net MVC ...我已经创建了数据库,现在我正在使用下面的代码在数据库中使用View Model类插入数据。 但它在用户表中为db.savechanges()提供了实体验证错误(如tbl _user)。请让我知道我犯的错误。Asp.Net中的实体验证错误MVC

代码在DB

插入
public string RegisterStudent(RegisterationLoginViewModel svm) 
    { 
     tbl_User_Role usr_role = new tbl_User_Role 
     { 
      // UserRole_Id=svm.User_Role_id, 
      RoleName = svm.User_Role, 
      Dsecription=svm.Description, 
      OtherDetails=svm.OtherDetails, 
     }; 
     db.tbl_User_Role.Add(usr_role); 
     db.SaveChanges(); 

     tbl_User S_Up = new tbl_User 
     { 
      FullName = svm.Full_Name, 
      DOB = svm.Date_of_Birth, 
      Address = svm.Home_Address, 
      MobileNumber = svm.Mobile_Number1, 
      CNIC = svm.CNIC, 
      Country = svm.Country, 
      Provience = svm.Provience, 
      City = svm.City, 
      UserRole_Id = usr_role.UserRole_Id, 
      Gender = svm.Gender, 
      CreatedOn = DateTime.Now, 

     }; 
     db.tbl_User.Add(S_Up); 
     db.SaveChanges(); -->**Exception is thrown at this line** 
+0

包含错误。 – Fran

+0

完成先生!错误发生在代码的最后一行 –

+1

需要查看错误本身,而不仅仅是“ - > **抛出异常**”堆栈跟踪将会有所帮助。我对这个问题的第一个预感是fk约束。 – nurdyguy

回答

0

如果UserRole_Id模型tbl_User_Role不是自动生成的,然后写这行代码UserRole_Id = usr_role.UserRole_Idnull,因为可能它是tbl_User表的外键。

此外,如果您已设置DatabaseGeneratedOption.Identity,则在保存usr_role后需要获取它UserRole_Id,然后将其分配给UserRole_Id

最后重新检查您的必填字段是否为空,并且外键正在获取值。