EF Core fluent映射到内部对象属性

时间:2016-02-25 15:51:07

标签: c# entity-framework-core fluent-entity-framework

我有一个包含一些属性的类。 出于某些架构原因,我在课堂上有另一个对象的实例。

简单示例

public class MyEntity {
   public MySubEntity SubEntity {get; set;}
}

为此,我创建了流畅的映射,如:

builder.ToTable(MyEntity.CONST_TABLE_NAME);
builder.HasKey(m => m.Id);
builder.Property(m => m.Column1).IsRequired();
builder.Property(m => m.SubEntity.Column2).IsRequired();

我无法将所有subEntity属性集成到我的主实体中(我的subEntity有自己的智能)。我只想将我的子实体属性(不存储在单独的表中)映射到myEntity表。

最后一行抛出异常:

The expression 'm => m.SubEntity.Column2' is not a valid property expression. The expression should represent a property access: 't => t.MyProperty'.

如何执行此类映射?

1 个答案:

答案 0 :(得分:3)

EF Core目前不支持此类映射。 EF Core 1.0 RTM不支持它(请参阅我的github问题:https://github.com/aspnet/Home/issues/1330

正如我在github问题中描述的那样,我找到了2个解决方案:

1)从我的模型中创建一个派生类,专门为EF设计,并将所有属性公开为简单。插入/更新和从Db检索时需要更多映射。我们不选择此选项

2)创建代理属性。在我的例子中,这就像:

input

这似乎是最好的解决方案(我们选择这个)。

相关问题