相关疑难解决方法(0)

Entity Framework 6的动态MySQL数据库连接

我希望将动态连接字符串传递给实体框架上下文.我有超过150个相同的模式(每个帐户一个),我想选择这样的连接:

ApplicationDbContext db = new ApplicationDbContext("dbName");
Run Code Online (Sandbox Code Playgroud)

理论上这很容易,因为我可以创建一个connectionString并将其作为构造函数的参数传递,例如:

public ApplicationDbContext(string dbName) : base(GetConnectionString(dbName))
{
}

public static string GetConnectionString(string dbName)
{
    // The connectionString passed is something like:
    // Server=localhost;Database={0};Uid=username;Pwd=password
    var connString =  ConfigurationManager
                         .ConnectionStrings["MyDatabase"]
                         .ConnectionString
                         .ToString();

    return String.Format(connString, dbName);
}
Run Code Online (Sandbox Code Playgroud)

我只是传递连接字符串名称时可以成功连接,但是当我动态生成它时不能如下所示.我现在意识到这是因为web.config中的连接字符串中包含providerName="MySql.Data.MySqlClient"属性.

当我将实际连接字符串动态传递给连接时,它假定它需要连接到SQL Server而不是MySQL,并且由于连接字符串无效而失败.

问题是,如果我动态创建提供者名称,如何将提供者名称传递给连接字符串?

c# mysql asp.net entity-framework entity-framework-6

22
推荐指数
1
解决办法
3万
查看次数

C#Entity Framework:不支持关键字:'port'

您好我有一个以上的项目连接到CodeFirst Entity Framework的某个数据库.

除了一个顽固的项目外,所有项目都能成功连接.

我得到的错误是: Keyword not supported: 'port'

我查看了无数的stackoverflow问题,mysql论坛,实体框架论坛等,包括:

MappingException Edm.String与SqlServer.varbinary不兼容

MySQL的连接字符串中不支持关键字

不支持关键字:'元数据'+ MySQL

我的连接字符串如下所示: server=myservername;port=3306;uid=myaccount;database=mydb;pwd=mypwd123

我的db.cs文件如下所示:

public partial class MyDB : DbContext
{
    public MyDB ()
        : base("server=myservername;port=3306;uid=myaccount;database=mydb;pwd=mypwd123")
    {
        Logger.Trace("test123");
    }

    public virtual DbSet<MyItem> MyItems { 
get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<MyItem>()
            .Property(e => e.Content)
            .IsUnicode(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我port:3306从连接字符串中删除时,我得到了这个: System.Data.Entity.Core.MappingException: Schema specified is not valid. Errors: (8,12) : error 2019: Member Mapping specified is not valid. The type 'Edm.DateTime[Nullable=False,DefaultValue=,Precision=]' of member 'Time' …

.net c# mysql entity-framework

5
推荐指数
3
解决办法
1万
查看次数

MySQL的实体框架defaultConnectionFactory

当我将connectionString名称指定为基础构造函数的参数时,以下配置正常工作.因为我希望能够到后来更改默认的供应商无需重新编译,我想将其设置为我app.config而不是,但我不知道什么是,提供一种typedefaultConnectionFactory.

  <connectionStrings>
    <add name="MySQL" providerName="MySql.Data.MySqlClient" connectionString="SERVER=localhost;DATABASE=abc;UID=root;PASSWORD=;" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, EntityFramework"></defaultConnectionFactory>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
    </providers>
  </entityFramework>
Run Code Online (Sandbox Code Playgroud)

例外:

无法将Database.DefaultConnectionFactory设置为应用程序配置中指定的"MySql.Data.Entity.MySqlConnectionFactory,EntityFramework"类型的实例.请参阅内部异常了解详细信

内部异常(已翻译,VS设置为英语但某些消息仍为我的语言):

无法在程序集"EntityFramework"中加载"MySql.Data.Entity.MySqlConnectionFactory"类型

文件指出,大会名称冒号后如下,因此,我也试过MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6,给我这样的例外:

初始化字符串的格式不符合从索引0开始的规范.

我正在使用EF6,MySql.Data和MySql.Data.Entity.EF6 6.8.3.0.

.net c# mysql entity-framework

2
推荐指数
1
解决办法
9245
查看次数

标签 统计

c# ×3

entity-framework ×3

mysql ×3

.net ×2

asp.net ×1

entity-framework-6 ×1