2016-09-18 31 views
2

我使用的代碼第一種方法,我知道我不應該在我的控制器這麼多的代碼的任何方式,我不斷收到此錯誤System.Data.Entity.ModelConfiguration.ModelValidationException

System.Data.SqlClient.SqlException' occurred in EntityFramework.dll but was not handled in user code

內部異常會是這樣

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces,

這是我的代碼

[HttpPost] 
    public ActionResult Registration(Models.Users model) 
    { 
     if (ModelState.IsValid) 
     { 
      using (var Ref_DB = new MainDBContext()) 
      { 
       var encryptedPassword = CustomLibraries.CustomEncrypt.Encrypt(model.Password); 
       var user = Ref_DB.Users.Create();//this is where error occours 
       user.Email = model.Email; 
       user.Password = encryptedPassword; 
       user.Country = model.Country; 
       user.Name = model.Name; 
       Ref_DB.Users.Add(user); 
       Ref_DB.SaveChanges(); 
      } 
     } 
     else 
     { 
      ModelState.AddModelError("", "One or more feilds have been errors");    
     } 
     return View(); 

我意識到我的連接字符串可能b E中的問題,這是我的連接字符串

<connectionStrings> 
<add name="DefaultConnection" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|MyDatabase.mdf;Integrated Security=True" 
providerName="System.Data.SqlClient"/> 

.mdf文件是在我的App_Data文件夾

,這是我的模型

public class MainDBContext:DbContext 
{ 
    public MainDBContext() 
     :base("name=DefaultConnection") 
    { 

    } 
    public DbSet<Models.Users> Users { get; set; } 
} 

這是用戶類

public class Users 
{ 
    #region [- Ctor -] 
    public Users() 
    { 

    } 
    #endregion 

    [Key] 
    public int Id { get; set; } 

    #region [- Email -] 
    [Required] 
    [DataType(DataType.EmailAddress)] 
    public string Email { get; set; } 
    #endregion 

    #region [- PassWord -] 
    [Required] 
    [DataType(DataType.Password)] 
    public string Password { get; set; } 
    #endregion 

    public string Name { get; set; } 

    public string Country { get; set; } 

} 
+0

你能不能請在這裏發表我們的用戶類? – sachin

+0

@sachin done .... –

+0

您必須查看ModelValidationException的詳細信息。真正的問題可能被隱藏起來。 Users.Create()只是觸發拋出異常的模型構建,它也可能是問題出現在其他類中的情況。 – sachin

回答

0

是的,您的連接字符串是錯誤的。您必須要求mdf文件是這樣的\MyDatabase.mdf

完整的連接字符串:

<add name="DefaultConnection" connectionString="Data Source= 
(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Integrated 
Security=True" providerName="System.Data.SqlClient"/> 

更新:

使用本:

var user = new Models.Users(); 

這不是:

var user = Ref_DB.Users.Create();//this is where error occurs 

更新2:以下命令

運行在你的cmd prompt

sqllocaldb create "v12.0"

您對該目錄切換到你安裝這樣的:

C:\Program Files\Microsoft SQL Server\120\Tools\Binn>sqllocaldb create "v12.0" 

更新3:

Breaking Changes to LocalDB

+0

得到了同樣的錯誤 –

+0

這裏要做什麼'var user = Ref_DB.Users.Create();'? – Sampath

+0

我在代碼庫中創建用戶表,所以我們可以修改它。 –