看起来最近已向 Entity Framework Core 添加了支持,.NET Core 2.1 (preview)
以允许SQL_VARIANT
列映射 ( https://github.com/aspnet/EntityFrameworkCore/issues/7043 )。
看起来这样做的方法是使用新HasConversion()
方法(https://docs.microsoft.com/en-us/ef/core/modeling/value-conversions)。
因此,为了映射我的SQL_VARIANT
列并将基础数据类型视为VARCHAR
任意长度的 a(此时我只关心读取它),我可以执行以下操作(此处的Value
属性是object
模型中的类型):
entity.Property(e => e.Value).HasConversion(v => v.ToString(),
v => v.ToString());
如果SQL_VARIANT
的基础数据类型是VARCHAR
任意长度的,则此方法有效。
但是,作为 a SQL_VARIANT
,该列可以包含其他类型的数据,例如DATETIME
值。
为简单起见,我只在此处指定DateTime
和string
,但理论上我可能希望支持映射任何可以存储在SQL_VARIANT
列中的数据所需的数据类型,如果可能的话。
我将如何确定我想在运行时映射到这两种类型(string
和)中的哪一种?DateTime
有没有办法做到这一点?