CodeFirst 表之間的關聯

多重性關係能夠是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"); });

 

 

多對多的關係語法讓我比較費解。求高手解釋一下

相關文章
相關標籤/搜索