【发布时间】:2019-03-10 13:28:42
【问题描述】:
我有一个 SQLite 和 SQL Express 数据库,这两个数据库都有一个包含以下列的表:
我的简化实体如下所示:
public class Customer
{
public string BusinessIdentifier { get; set; }
}
如果您注意到我的实体上的数据库 bigint 与 string 之间的数据类型不同,例如。
我已经使用Fluent API 进行如下映射:
entity.Property(p => p.BusinessIdentifier).HasColumnName("CUSTOMER")
在 SQLite 上,当我使用 options.UseSqlite(connectionString); 时,这项工作就好了。对于 SQLite connectionString="Data Source=my_db.db"
但是,当我使用 options.UseSqlServer(connectionString); 使用 SQL Server Express 时,它开始出现类型不匹配的错误。
我必须在 Fluent API 上显式处理这种转换,如下所示:
entity.Property(p => p.BusinessIdentifier).HasColumnName("CUSTOMER").HasConversion(v => Convert.ToInt64(v), v => v.ToString());
SQL Server connectionString="Data Source=my_machine\SQLEXPRESS;Initial Catalog=my_db;Integrated Security=True;"
问题:
有人能解释一下为什么这两种数据库之间存在这种差异吗?真的需要在每种情况下都如此具体吗?
问候 基兰
【问题讨论】:
-
我认为您可以将
[DataType(DataType.Text)]与属性或类似属性一起使用 -
但是它在 SQLite 中是如何工作的,它在任何一个数据库上的 EF 代码都是一样的,我想知道它是如何在一个数据库上工作但在另一个数据库上失败
标签: entity-framework-core asp.net-core-2.0