EF6 和 ConvertValue

问题描述

在 EF Core 中,您可以通过以下方式将值从一种类型转换为另一种类型:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<MyClass>()
    .Property(x => x.MyProperty)
    .HasConversion(
        v => ...
        v => ...
    )
}

我知道 EF6 不支持功能,但是完成相同操作的解决方法是什么?在我的情况下,问题是我必须将 varchar 字段转换为 Guid,不幸的是,我无法将数据库中的类型直接更改为 uniqueidentifier。注意:这将与 odata 一起使用。

就这样做:

[EnableQuery]
public IHttpActionResult Get()
{
    return Ok(from p in db.Persons
        select new Person
        {
            Guid = Guid.Parse(p.GuidString),Name = p.Name
        });
}

会导致错误

LINQ to Entities 无法识别方法 'System.Guid Parse(System.String)' 方法,并且该方法无法转换为存储表达式。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)