如何在Entity Framework连接字符串中设置Convert Zero Datetime

时间:2015-05-01 16:52:06

标签: c# mysql entity-framework-5

我正在尝试使用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" />

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

      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);

这很有效。但是一旦我取消注释上面代码中的一行,我就会得到一个例外:

  

不支持关键字:&#39; convertzerodatetime&#39;。我试过&#34;转换零日期时间&#34;结果相同。

我需要这个设置(转换零日期时间=真),因为没有它,当它尝试从数据库加载全部为零的日期时间值时,应用程序失败(我无法控制那些)。

2 个答案:

答案 0 :(得分:2)

如错误消息所示,SqlConnectionStringBuilder不支持convertzerodatetime关键字。请考虑使用MySqlConnectionStringBuilder代替。

答案 1 :(得分:0)

&#39;转换零日期时间&#39;适用于EF 6,您可以更新您的图书馆吗?尝试从&#39; convertzerodatetime = True&#39;更改您的web.config转换零日期时间=真&#39;。

<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" />