簡體   English   中英

實體框架:如何使用Fluent API實現共享主鍵?

[英]Entity Framework: how to implement shared primary key with Fluent API?

我有兩個表,並希望使用其中一個PK作為PK。

這是我使用數據注釋的實現:

public class User
{
    public System.Guid UserId { get; set; }
    public string UserName { get; set; }
}

public class Student
{
    [Key, ForeignKey("User")]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public System.Guid StudentId { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    // shared primary key 
    public virtual User User { get; set; }
}

這里Student表使用User的主鍵。

如何使用Fluent API實現此功能?

(作為第二個問題,如果我從Student表中刪除一個值,是否會進行級聯刪除?)

如何使用Fluent API實現此功能?

modelBuilder.Entity<Student>()
    .HasRequired(s => s.User)
    .WithOptional();

如果我從學生表中刪除一個值,將進行級聯刪除。

不,因為Student是關系中的依賴(它攜帶外鍵)而不是主體(即User )。 級聯刪除僅在刪除主體時有效。 對於一對一關系,您必須手動啟用它:

modelBuilder.Entity<Student>()
    .HasRequired(s => s.User)
    .WithOptional()
    .WillCascadeOnDelete(true);

現在,如果User被刪除,相關的Student (如果有的話)也將被刪除。

暫無
暫無

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

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