简体   繁体   English

如何在实体框架连接字符串中设置“转换零日期时间”

[英]How to set Convert Zero Datetime in Entity Framework connection string

I am trying to connect to MySQL database using Entity Framework 5. Everything works fine when using the connection string supplied by app.config: 我正在尝试使用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" />

However, I need to create the connection in code (I want to be able to supply the db password at runtime). 但是,我需要用代码创建连接(我希望能够在运行时提供db密码)。 So far I have the following code: 到目前为止,我有以下代码:

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

And that works. 那行得通。 But as soon as I uncomment the one line in the code above, I get an exception: 但是,只要取消注释上面代码中的一行,就会出现异常:

Keyword not supported: 'convertzerodatetime'. 不支持的关键字:“ convertzerodatetime”。 I tried "Convert Zero Datetime" with same results. 我尝试了“转换零日期时间”,结果相同。

I need this setting (Convert Zero Datetime=true), because without it the app fails when it tries to load datetime values from the database with all zeros (I have no control over those). 我需要此设置(Convert Zero Datetime = true),因为如果没有它,则应用程序尝试从全零加载数据库中的datetime值时将失败(我无法控制这些值)。

as error message says, SqlConnectionStringBuilder does not support the convertzerodatetime keyword. 如错误消息所述,SqlConnectionStringBuilder不支持convertzerodatetime关键字。 Consider using the MySqlConnectionStringBuilder instead. 考虑改用MySqlConnectionStringBuilder

'Convert Zero Datetime' works on EF 6, can you update your library? “转换零日期时间”在EF 6上有效,您可以更新库吗? Try to change your web.config from 'convertzerodatetime=True' to 'Convert Zero Datetime=True'. 尝试将您的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" />

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM