我正在尝试使用MySQL数据库(ef代码第一种方法,VS 2013专业版).我按照这些说明操作.
我的问题是,在启用迁移后,我无法进行首次迁移.我使用命令Add-migration migrationName,我收到一个错误:
"System.NullReferenceException:对象引用未设置为对象的实例.在MySql的System.Data.Entity.Core.Common.DbProviderServices.GetProviderManifestToken(DbConnection连接)的MySql.Data.MySqlClient.MySqlProviderServices.GetDbProviderManifestToken(DbConnection连接)处.Data.Entity.MySqlManifestTokenResolver.ResolveManifestToken(DbConnection连接)...
你调用的对象是空的.".
我试图以这种方式解决它.但现在我发现了这个:
"这可能是因为没有为您正在使用的方案指定必需参数.例如,指定连接字符串而不指定提供程序名称."
所以问题可能出在我的连接字符串中.
我有来自VS> Server Explorer的连接字符串,我的数据库有"活动"连接.我查看了连接属性并将连接字符串复制到我的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") {}
首次迁移开始.在Update-database命令之后我有另一个问题Specified key was too long; max key length is 767 bytes
,但问题System.NullReferenceException
解决了.