看起来最近已向 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有没有办法做到这一点?