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

时间:2016-06-15 11:17:22

标签: c# entity-framework ef-fluent-api

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

Table Foo
FooKey         UNIQUEIDENTIFIER
ParentFooKey   VARCHAR(36)

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

我正在尝试使用EF fluent API映射此关系,但由于两列之间的类型不同而遇到问题。

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

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

1 个答案:

答案 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;

}