实体框架数据库连接错误

时间:2015-05-10 17:14:22

标签: entity-framework asp.net-mvc-4

我第一次使用Entity框架(代码优先)。我用以下代码创建了一个上下文类。

public class ContactContext : DbContext
{
    public ContactContext()
        : base("DBConnectionString")
    {
        Database.SetInitializer<ContactContext>(new DropCreateDatabaseIfModelChanges<ContactContext>());
    }

    public DbSet<Contact> Contacts { get; set; }

}

Web.config文件:

<add name="ContactMgrDBContext" connectionString="Data Source=(Local);Initial Catalog=ContactsDB;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>

控制器类:

public class ContactController : Controller
{

    ContactContext db = new ContactContext();

//         // GET:/联系人/

    public JsonResult ContactList(int? selectedContact)
    {

        IQueryable<Contact> contacts = db.Contacts;

        //contacts.ToList()

        var contactsJson = JsonConvert.SerializeObject(contacts.ToList());

        return Json(contactsJson, JsonRequestBehavior.AllowGet);

}

当我在调试模式下运行应用程序时,我在此语句中收到以下异常。

var contactsJson = JsonConvert.SerializeObject(contacts.ToList());

EntityFramework.dll中出现“System.Data.ProviderIncompatibleException”类型的异常,但未在用户代码中处理 附加信息:从数据库获取提供程序信息时发生错误。这可能是由实体框架使用不正确的连接字符串引起的。检查内部异常以获取详细信息,并确保连接字符串正确。

联系班级代码:

public class Contact
 {
    [Key]
    public int ContactId { get; set; }
    [Required, MaxLength(100)]
    public string FirstName { get; set; }
    [Required, MaxLength(100)]
    public string LastName { get; set; }
    public string EMail { get; set; }
    public string Phone { get; set; }
    public string BusinessName { get; set; }

 }

1 个答案:

答案 0 :(得分:3)

您的web.config声明一个名为“ContactMgrDBContext”的连接字符串,而您的上下文类引用连接字符串名称“DBConnectionString”。

尝试更新您的上下文类构造函数以使用正确的名称和语法:

public ContactContext()
    : base("name=ContactMgrDBContext")
{
    Database.SetInitializer<ContactContext>(new DropCreateDatabaseIfModelChanges<ContactContext>());
}

您还尝试使用localdb来处理数据库。我尝试使用您的Data Source=(Local)名称运行并遇到类似错误。您可能想尝试更新它以使用Data Source=(localdb)\v11.0,如下所示:

<add name="ContactMgrDBContext" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=ContactsDB;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>