请确保已经安装下列软件最新版
mysql-connector-net
mysql-for-visualstudio
如果你出现了上述问题
重新生成当前解决方案
如果还是有问题 请执行
Install-Package MySql.Data.Entity
Install-Package EntityFramework.Extended
如果还是有问题,请将为了entity在visual studio中安装的扩展 全部删掉然后执行
Install-Package EntityFramework
Install-Package MySql.Data.Entity
Install-Package EntityFramework.Extended
如果还是有问题 请新建一个全新工程
执行:
Install-Package EntityFramework
Install-Package MySql.Data.Entity
Install-Package EntityFramework.Extended
XXXXXXnfig
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="XXXXXXXXXXXXXSqlClient" type="XXXXXXXXXXXXXXXXXXXXXXXXXSqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="XXXXXXXXXXXXXSqlClient" />
<add name="MySQL Data Provider" invariant="XXXXXXXXXXXXXSqlClient" description=".Net Framework Data Provider for MySQL" type="XXXXXXXXXXXXXXXXXXXXXXXXXSqlClientFactory, MySql.Data, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
<connectionStrings>
<add name="mysqldbEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/XXXXXXXXXl;provider=XXXXXXXXXXXXXSqlClient;provider connection string="server=127.0.0.1;user id=root;password=jingru;persistsecurityinfo=True;database=mysqldb"" providerName="System.Data.EntityClient" />
<add name="mysqldbEntities1" connectionString="metadata=res://*/TableModel.csdl|res://*/TableModel.ssdl|res://*/XXXXXXXXXXXXXl;provider=XXXXXXXXXXXXXSqlClient;provider connection string="server=127.0.0.1;user id=root;password=jingru;persistsecurityinfo=True;database=mysqldb"" providerName="System.Data.EntityClient" />
</connectionStrings>
“TableDetails”中列“IsPrimaryKey”的值为DBNull.
Entity Framework连接MySQL时:由于出现以下异常,无法生成模型:“表“TableDetails”中列“IsPrimaryKey”的值为DBNull.
解决方案:
Execute the following commands in MySQL.
use <<database name>>; set global optimizer_switch='derived_merge=OFF';
如果还不能用 好像是表里的东西建错了 请仔细检查,我删掉了原来的表 重新建了个简单的表就好了
如果你没有Delete Update 这些扩展方法 请安装
EntityFramework.Extended 执行: Install-Package EntityFramework.Extended
如果你的 EntityFramework.Extensions Delete Update 发生一个或多个错误 听说原因是因为默认生成的是 mssql语句 mysql不支持
原帖:
XXXXXXXXXXXXXXXXXXXXXX/jerron/p/XXXXXXXXXXml
解决方法 :
<code class="lang-c">public partial class CL1000Entities : DbContext
{
public CL1000Entities()
: base("name=CL1000Entities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema(""); //添加
base.OnModelCreating(modelBuilder);//添加
}
public virtual DbSet<test> test { get; set; }
}
static void Main()
{
EntityFramework.Container container = new EntityFramework.Container();//添加
EntityFramework.Locator.RegisterDefaults(container);//添加
container.Register<entityframework.batch.ibatchrunner>(() => new EntityFramework.Batch.MySqlBatchRunner());//添加
EntityFramework.Locator.SetContainer(container);//添加
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}</entityframework.batch.ibatchrunner></test></code>
如果出现 基础提供程序在 Open 上失败。可能是你在新建模型的时候选择了 否,从链接字符串中排除敏感数据,我将在应用程序代码中设置此数据
设置方法 打开 XXXXXXnfig
<code class="lang-xml"><connectionstrings>
<add name="CL1000Entities" connectionstring="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=MySql.Data.MySqlClient;provider connection string=" server="localhost;user" id="root;password=xxxx;persistsecurityinfo=True;database=CL1000""" providername="System.Data.EntityClient">
</add></connectionstrings></code>
在id后面输入 password=xxxx;
或者在你所建立的模型的构造函数中传入 密码
public CL1000Entities() :
base(
"name=CL1000Entities") {
base.Database
.Connection
.ConnectionString
= "server=localhost;user id=root;password=xxxxxxxx;persistsecurityinfo=True;database=CL1000"; }
更新条目时出错.有关信息请参阅内部异常
这个应该是 你手动修改过数据库字段的类型,需要手动更新你建立的模型文件 打开*.edmx ,空白区域右键->从数据库更新模型
也有可能是 有唯一属性的字段重复了
unable to load the specified metadata resource
200字以内,仅用于支线交流,主线讨论请采用回复功能。