[英]ef core ignore navigation property
我有一個實體User
,它有兩個屬性CreatedBy
和UpdatedBy
都引用User
。 默認情況下,EF假定這兩者是彼此一對一的關系。 我收到以下錯誤消息:
消息:System.InvalidOperationException:無法確定在“User.CreatedBy”和“User.UpdatedBy”之間檢測到的一對一關系的子/依賴方。 要標識關系的子/依賴方,請配置外鍵屬性。 如果這些導航不應該是相同關系的一部分,則在不指定反向的情況下配置它們。 有關詳細信息,請參閱http://go.microsoft.com/fwlink/?LinkId=724062 。
目前,我有一個這樣的類:
public class User
{
public int Id { get; set; }
public int? CreatedById { get; set; }
public User CreatedBy { get; set; }
public int? UpdatedById { get; set; }
public User UpdatedBy { get; set; }
}
基本上,這是我正在嘗試的:
CreatedBy
並且任意數量的用戶都可以擁有相同的UpdatedBy
。 如何讓EF忽略導航屬性? 我有CreatedBy
是我以后可以使用Include(u => u.CreatedBy)
。 我知道使用IEnumerable<User> AllCreatedUsers
屬性可以解決這個問題,但我不想為我的實體中的每一個創建一個IEnumerable
。 有沒有辦法用流暢的API做到這一點?
這是我嘗試過的:
modelBuilder.Entity<User>()
.Property<IEnumerable<User>>("AllCreatedUsers");
modelBuilder.Entity<User>().HasOne(u => u.CreatedBy)
.WithMany(u => EF.Property<IEnumerable<User>>(u, "AllCreatedUsers"));
您需要使用無參數WithMany
方法重載來配置兩個單導航屬性關系:
modelBuilder.Entity<User>()
.HasOne(u => u.CreatedBy)
.WithMany();
modelBuilder.Entity<User>()
.HasOne(u => u.UpdatedBy)
.WithMany();
您對兩個屬性的ForeignKey
數據注釋。
public class User
{
public int Id { get; set; }
public int? CreatedById { get; set; }
[ForeignKey("CreatedById")]
public User CreatedBy { get; set; }
public int? UpdatedById { get; set; }
[ForeignKey("UpdatedById")]
public User UpdatedBy { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.