首页 文章

不同类型的列之间的实体框架关系

提问于
浏览
1

我有一个现有的数据库,可以说我无法改变 . 此数据库中的一个表具有以下结构:

Table Foo
FooKey         UNIQUEIDENTIFIER
ParentFooKey   VARCHAR(36)

所以基本上每一行都可以在同一个表中与其父级有关系 .

我试图使用EF流利API来映射这种关系,但由于两列之间的类型不同而遇到麻烦 .

我已经尝试在我的Foo类中创建一个属性,它只是将_2800241解析为Guid,但是当我尝试在Fluent API中使用它时,我得到一个错误,因为该属性未映射到EF中 .

或者有没有办法将 ParentFooKey 映射为EF中的Guid? ParentFooKey 列中的值始终是GUID的字符串表示形式或NULL .

1 回答

  • 1

    据我所知,你做不到 . 您将不得不查询您需要的内容,例如:

    YourContext.YourDbSet.Where(x=>x.FooKey == parentKey)
    

    您还可以为字符串创建一个Extension方法,将其转换为GUID,以使您的生活更轻松 . 像这样的东西:

    public Guid ToGuidOrDefault(this string s){
    Guid guid = Guid.Empty;
    Guid.TryParse(s, out guid){
    return guid;
    
    }
    

相关问题