2015-05-10 57 views
3

我第一次使用實體框架(代碼優先)。我用下面的代碼創建了一個上下文類。實體框架數據庫連接錯誤

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

型「System.Data.ProviderIncompatibleException」的異常出現在EntityFramework.dll但在用戶代碼中沒有處理 附加信息:在獲取從數據庫提供信息時出錯。這可能是由實體框架使用不正確的連接字符串造成的。檢查內部異常以獲取詳細信息,並確保連接字符串正確。

聯繫類代碼:

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

} 
+0

我正在關閉此問題,因爲數據庫連接的原始問題已得到解決。我現在面臨着將數據(json格式)轉換爲jqGrid的問題。我將爲此創建一個單獨的問題。感謝大家的幫助! –

+0

這裏是鏈接到我的其他問題有關的數據沒有得到由jqGrid呈現。即使數據是由JSON格式的操作方法返回的。 http://stackoverflow.com/q/30159205/1490250 –

回答

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"/> 
+0

我的不好!但即使做出這個修正後,我也會得到同樣的例外。您在代碼中看到的其他任何問題? –

+0

@raringsunny我已經更新了我的答案。看看這是否讓你更進一步。 – cmcquillan

+0

我已經能夠通過更正localdb連接信息來解決數據庫連接異常。在@ cmcquillan的回覆中建議您必須提及v11.0。但是,我的jqGrid控件仍然不顯示任何數據。即使我通過實體框架將數據填充到新創建的數據庫/表中,也不會列出任何記錄。請參考我的代碼,特別是控制器中的公共職能ContactList。我通過這個方法返回JsonResult。 –

相關問題