[英]Entity Framework optional foreign key creating redundant FK field in dependant
我正在嘗試使用此模型在User和TeamMember之間建立0-1關系
public class User
{
[Key]
public Guid Id { get; set; }
public Guid? TeamMemberId { get; set; }
public virtual TeamMember TeamMember { get; set; }
}
public partial class TeamMember
{
[Key]
[Column(Order = 0)]
public Guid TeamId { get; set; }
[Key]
[Column(Order = 1)]
public Guid UserId { get; set; }
public virtual MSUCTeam Team { get; set; }
public virtual User User { get; set; }
}
public class Team
{
[Key]
public Guid Id { get; set; }
public virtual ICollection<TeamMember> TeamMembers { get; set; }
}
為了告訴EF有關關系的所有信息,我使用了如下的Fluent API
modelBuilder.Entity<Team>()
.HasMany(e => e.TeamMembers)
.WithRequired(e => e.Team)
.HasForeignKey(e => e.TeamId).WillCascadeOnDelete();
modelBuilder.Entity<User>()
.HasOptional(e => e.TeamMember)
.WithRequired(e => e.User);
表本身是在上下文中定義的
public virtual DbSet<Team> Teams { get; set; }
public virtual DbSet<TeamMembers> TeamMembers { get; set; }
這將在數據庫中生成所需的表,但是TeamMembers表具有3列:
1)TeamId(Guid,不可為空):PK和FK鏈接到Team.Id。 2)UserId(Guid,不可為空):PK。 3)User_Id(Guid,不可為空):FK鏈接到User.Id
如何使UserId列成為鏈接到User表的PK和FK? 沒有UserId和TeamId都不會出現TeamMember條目,但是我必須告訴EF我想要它做什么。
我真的無法測試,但嘗試設置外鍵注釋
public partial class TeamMember
{
[Key]
[Column(Order = 0)]
public Guid TeamId { get; set; }
[Key]
[Column(Order = 1)]
public Guid UserId { get; set; }
[ForeignKey("TeamId")]
public virtual MSUCTeam Team { get; set; }
[ForeignKey("UserId")]
public virtual User User { get; set; }
}
用這個:
public class User
{
[Key]
public Guid Id { get; set; }
public virtual TeamMember TeamMember { get; set; }
}
public partial class TeamMember
{
[Key, ForeignKey("User")]
public Guid Id{ get; set; }
public virtual User User { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<TeamMember>()
.HasRequired(p => p.User)
.WithOptional(p => p.TeamMember);
}
有關拆分表的更多信息,請單擊此鏈接 ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.