我有一个现有的数据库,可以说我无法改变。此数据库中的一个表具有以下结构:
Table Foo
FooKey UNIQUEIDENTIFIER
ParentFooKey VARCHAR(36)
所以基本上每一行都可以在同一个表中与其父级有关系。
我正在尝试使用EF fluent API映射此关系,但由于两列之间的类型不同而遇到问题。
我已经尝试在我的Foo类中创建一个属性,它只是将ParentFooKey
解析为Guid但是当我尝试在Fluent API中使用它时,我得到一个错误,因为该属性未映射到EF中。
或者,有没有办法将ParentFooKey
映射为EF中的Guid? ParentFooKey
列中的值始终是GUID的字符串表示形式或NULL。
答案 0 :(得分: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;
}