System.Data.Entity.ModelConfiguration.ModelValidationException

时间:2016-09-18 07:53:38

标签: c# sql-server entity-framework

我正在使用代码第一种方法,我知道我不应该在我的控制器中有这么多代码我不断收到此错误

  

System.Data.SqlClient.SqlException'发生在EntityFramework.dll中,但未在用户代码中处理

内部异常就是这个

  

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:SQL网络接口,

这是我的代码

 [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();

我意识到我的连接字符串可能是问题,这是我的连接字符串

<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; }

}

1 个答案:

答案 0 :(得分: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创建“v12.0”

您必须将目录更改为您的安装,如下所示:

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

更新3:

Breaking Changes to LocalDB