如何在 Entity Framework 连接字符串中设置转换零日期时间
How to set Convert Zero Datetime in Entity Framework connection string
我正在尝试使用 Entity Framework 连接到 MySQL 数据库 5. 使用 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="server=server.example.com;user id=username;password=pass;persistsecurityinfo=True;database=dbname;convertzerodatetime=True;characterset=utf8"" 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);
这行得通。但是一旦我取消注释上面代码中的一行,我就会得到一个异常:
Keyword not supported: 'convertzerodatetime'. I tried "Convert Zero Datetime" with same results.
我需要这个设置(Convert Zero Datetime=true),因为如果没有它,应用程序会在尝试从数据库中加载全为零的日期时间值时失败(我无法控制这些值)。
如错误消息所述,SqlConnectionStringBuilder 不支持 convertzerodatetime 关键字。考虑改用 MySqlConnectionStringBuilder。
'Convert Zero Datetime' 适用于 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="server=server.example.com;user id=username;password=pass;persistsecurityinfo=True;database=dbname;characterset=utf8;Convert Zero Datetime=True"" providerName="System.Data.EntityClient" />
我正在尝试使用 Entity Framework 连接到 MySQL 数据库 5. 使用 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="server=server.example.com;user id=username;password=pass;persistsecurityinfo=True;database=dbname;convertzerodatetime=True;characterset=utf8"" 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);
这行得通。但是一旦我取消注释上面代码中的一行,我就会得到一个异常:
Keyword not supported: 'convertzerodatetime'. I tried "Convert Zero Datetime" with same results.
我需要这个设置(Convert Zero Datetime=true),因为如果没有它,应用程序会在尝试从数据库中加载全为零的日期时间值时失败(我无法控制这些值)。
如错误消息所述,SqlConnectionStringBuilder 不支持 convertzerodatetime 关键字。考虑改用 MySqlConnectionStringBuilder。
'Convert Zero Datetime' 适用于 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="server=server.example.com;user id=username;password=pass;persistsecurityinfo=True;database=dbname;characterset=utf8;Convert Zero Datetime=True"" providerName="System.Data.EntityClient" />