【问题标题】:How to set Convert Zero Datetime in Entity Framework connection string如何在实体框架连接字符串中设置转换零日期时间
【发布时间】:2015-05-01 16:52:05
【问题描述】:

我正在尝试使用 Entity Framework 5 连接到 MySQL 数据库。使用 app.config 提供的连接字符串时一切正常:

<add name="MHEntities" connectionString="metadata=res://*/Models.Model.csdl|res://*/Models.Model.ssdl|res://*/Models.Model.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=server.example.com;user id=username;password=pass;persistsecurityinfo=True;database=dbname;convertzerodatetime=True;characterset=utf8&quot;" providerName="System.Data.EntityClient" />

但是,我需要在代码中创建连接(我希望能够在运行时提供数据库密码)。到目前为止,我有以下代码:

      SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder(@"Convert Zero Datetime=true;");
        sqlBuilder.DataSource = "server.example.com";
        sqlBuilder.InitialCatalog = "dbname";
        sqlBuilder.UserID = "username";
        sqlBuilder.Password = "password";
        sqlBuilder.IntegratedSecurity = true;
      //  sqlBuilder.Add("convertzerodatetime", "true");

        string providerString = sqlBuilder.ToString();

        EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();

        entityBuilder.Metadata = @"res://*/Models.Model.csdl|res://*/Models.Model.ssdl|res://*/Models.Model.msl";
        entityBuilder.Provider = "MySql.Data.MySqlClient";
        entityBuilder.ProviderConnectionString = providerString;

        ConnString = entityBuilder.ConnectionString;

        MHEntities context = new MHEntities(ConnString);

这行得通。但是一旦我取消注释上面代码中的一行,我就会得到一个异常:

不支持关键字:'convertzerodatetime'。我尝试了“转换零日期时间”,结果相同。

我需要这个设置 (Convert Zero Datetime=true),因为如果没有它,应用程序会在尝试从数据库中加载全为零的日期时间值时失败(我无法控制这些值)。

【问题讨论】:

  • SqlConnectionStringBuilder 用于 MS 自己的 SqlConnection 连接,不适用于 MySQL 或其他提供商。您需要为 MySQL 寻找替代方案。

标签: c# mysql entity-framework-5


【解决方案1】:

如错误消息所述,SqlConnectionStringBuilder 不支持 convertzerodatetime 关键字。考虑改用MySqlConnectionStringBuilder

【讨论】:

    【解决方案2】:

    “转换零日期时间”适用于 EF 6,您可以更新您的库吗?尝试将您的 web.config 从“convertzerodatetime=True”更改为“Convert Zero Datetime=True”。

    <add name="MHEntities" connectionString="metadata=res://*/Models.Model.csdl|res://*/Models.Model.ssdl|res://*/Models.Model.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=server.example.com;user id=username;password=pass;persistsecurityinfo=True;database=dbname;characterset=utf8;Convert Zero Datetime=True&quot;" providerName="System.Data.EntityClient" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 2014-07-17
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多