比方說,我有以下2種型號:EF核心的一個一對多的關係HasOne()WithMany()VS的hasMany()WithOne()
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public Blog Blog { get; set; }
}
現在,如果我要配置的機型在的DbContext關係有什麼區別:
modelBuilder.Entity<Post>()
.HasOne(p => p.Blog)
.WithMany(b => b.Posts);
和
modelBuilder.Entity<Blog>()
.HasMany(b => b.Posts)
.WithOne(p => p.blog);
,如果有一個diffrence,是什麼呢?我應該寫兩個還是隻寫一個?
附註:我是否必須定義外鍵?根據我對數據庫的瞭解,不能在沒有外鍵的情況下創建關係,但EF不要求您有外鍵字段。那麼EF如何在不知道外鍵的情況下處理關係?它會導致性能下降或錯誤?
那麼你是說這兩種方法之間沒有區別,哪種方式可以用同樣的方式使用模型?但使用HasOne()。WithMany更好? – soorena12
在這種情況下,沒有更好的方法,它們只是創建兩個對象之間關係的不同方式,通常是從子項到父項的映射 –
「您可以在DbContext中創建關係,而無需在數據庫中創建外鍵」。這是不正確的。 EF會引入一個影子屬性,它不在你的模型中,但會在數據庫中。 – Knelis