【发布时间】:2017-02-24 15:57:27
【问题描述】:
在我的项目中,我尝试将 Entity Framework 6 与 SQL Server 和 MySql 一起使用。
现在我在数据库中有一个名为 ISENABLED 的列,现在此列在 SQL Server 中为 bool,在 MYSQL 中为 Char(1),理想情况下它在 MYSQL 中应为 BIT,但由于这是旧数据库,因此此列使用 Char .
现在,每当我尝试使用 EF6 从 DB 中获取此表时,在 SQL Server 的情况下我都会获得成功的结果,因为在代码中我有一个为该数据库映射的 bool 属性,但对于 Mysql,它会抛出一个错误,指出无法转换字符串布尔值。 Singh char 在 EF6 中转换为字符串。
这是我的代码:
在数据库列的代码中映射的属性:
public bool IsEnabled { get; set; }
现在我对 MySQL 的尝试是:
private string IsCharBasedEnabled { get; set; }
[NotMapped]
public bool IsEnabled
{
get { return IsCharBasedEnabled == "0"; }
set { IsCharBasedEnabled = value ? "1" : "0"; }
}
我将IsCharBasedEnabled映射到数据库列,MySQL的Char列映射为字符串然后转换为bool如上图。
但此解决方案不适用于 SQL Server。
我可以有一些对具有相同属性的数据库都有效的东西吗?
我无法更改 MySQL 数据库的架构。
我应该在这里做什么?
【问题讨论】:
标签: c# mysql sql-server entity-framework-6 linq-to-entities