簡體   English   中英

實體框架代碼優先+首次遷移時使用mysql System.NullReferenceException

[英]Entity framework code first + mysql System.NullReferenceException at first migration

我正在嘗試使用MySQL數據庫(EF代碼優先方法,VS 2013 Professional)。 我遵循這些指示

我的問題是,啟用遷移后,我無法進行第一次遷移。 我使用命令Add-migration migrationName,但出現錯誤:

“ System.NullReferenceException:對象引用未設置為對象的實例。MySql.Data.Entity.Core.Common.DbProviderServices.GetProviderManifestToken(DbConnection連接)處的MySql.Data.MySqlClient.MySqlProviderServices.GetDbProviderManifestToken(DbConnection連接)處.Data.Entity.MySqlManifestTokenResolver.ResolveManifestToken(DbConnection連接)...

你調用的對象是空的。”。

我試圖用這種方式解決它。 但是現在我發現

“這可能是由於未為正在使用的方案指定必需的參數引起的。例如,指定連接字符串而不指定提供程序名稱。”

所以問題可能出在我的連接字符串中。

我從“ VS”>“服務器資源管理器”中獲得了連接字符串,與我的數據庫存在“活動”連接。 我查看了連接屬性,並將連接字符串復制到了web.config中。

在我的項目中,引用了MySql.Data,MySql.Data.Entity.EF6和MySql.Web。

任何人有任何想法我該怎么辦?

在新設置的EF + MySQL項目中,我至少來過兩次,這在嘗試啟用代碼優先遷移時給了我與OP完全相同的錯誤和堆棧跟蹤。 兩次都花了我很長時間才能找到最終可行的解決方案。

請確保您的DbContext類具有以下屬性:

[DbConfigurationType(typeof(MySqlEFConfiguration))]
class MyDbContext : DbContext
{
    // ...
}

我通過將連接字符串復制到上下文類中解決了我的問題。

public MyContextClass()
    : base("Server=myServer;Port=3306;Database=db_name;Uid=userName;Pwd=password") {}

首次遷移開始。 在執行更新數據庫命令后,我還有另一個問題。 Specified key was too long; max key length is 767 bytes Specified key was too long; max key length is 767 bytes ,但System.NullReferenceException的問題已解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM