多重性關係能夠是Optional(一個屬性可擁有一個單個實例或沒有)ui
Required(一個屬性必須擁有一個單個實例)spa
Many不少的(一個屬性能夠擁有一個集合或一個單個實例)。blog
Has方法包括以下幾個:get
• HasOptionalit
• HasRequiredio
• HasManymodel
在多數狀況還須要在Has方法後面跟隨以下With方法之一:語法
• WithOptional方法
• WithRequired集合
• WithMany
一對多
modelBuilder.Entity<Destination>()
.HasMany(d => d.Lodgings)
.WithOptional(l => l.Destination);
Destination一對多或零對多Lodging
若是將WithOptional改爲WithRequired 這將使Lodgings必須對應一個Destination,若是刪除Destination將級聯刪除Lodgings 詳細>>
關閉級聯刪除的方法:
如今你能夠設置此關係的WillCascadeOnDelete爲false:
HasRequired(l=>l.Destination)
.WithMany(d=>d.Lodgings)
.WillCascadeOnDelete(false)
一對一
modelBuilder.Entity<PersonPhoto>()
.HasRequired(p => p.PhotoOf)
.WithOptional(p => p.Photo);
PersonPhoto一對零或一對一Photo
多對多關係
modelBuilder.Entity<Destination>()
.HasMany(d => d.Lodgings)
.WithRequired()
.HasForeignKey(l => l.LocationId);
Destination多對多Lodging
modelBuilder.Entity<Help>()
.HasMany<Help>(t => t.Helps)
.WithMany()
.Map(m => { m.ToTable("RelatedHelp"); });
多對多的關係語法讓我比較費解。求高手解釋一下