簡體   English   中英

EF Core fluent映射到內部對象屬性

[英]EF Core fluent mapping to inner object properties

我有一個包含一些屬性的類。 出於某些架構原因,我在我的班級中有另一個對象的實例。

簡單的例子

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'.

我該如何進行這種映射?

EF Core目前不支持此類映射。 EF Core 1.0 RTM不支持它(請參閱我的github問題: https//github.com/aspnet/Home/issues/1330

正如我在github問題中描述的那樣,我找到了2個解決方案:

1)從我的模型中創建一個派生類,專門為EF設計,並將所有屬性公開為簡單。 插入/更新和從Db檢索時需要更多映射。 我們不選擇此選項

2)創建代理屬性。 在我的例子中,這就像:

public class MyEntity {
   private MySubEntity SubEntity {get; set;}
   public string SubEntityValue 
   { 
     get 
     { 
         return SubEntity.Value;
     } 
     set 
     { 
         SubEntity.Value = value; 
     }
}

這似乎是最好的解決方案(我們選擇這個)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM