gpt4 book ai didi

entity-framework - 为什么我会得到一个带有 Entity Framework 代码优先外键属性的额外外键列?

转载 作者:行者123 更新时间:2023-12-03 12:36:37 24 4
gpt4 key购买 nike

我最近遇到了 Entity Framework Code First 这个奇怪的问题。

我的课看起来像这样

public class Status
{
[Key]
public int StatusID { get; set; }
public string Name { get; set; }
public int MemberID { get; set; }

[ForeignKey("MemberID")]
public virtual Member Member { get; set; }

public int PosterID { get; set; }

[ForeignKey("PosterID")]
public virtual Member Poster { get; set; }

public virtual ICollection<StatusLike> StatusLikes { get; set; }
public virtual ICollection<StatusComment> StatusComments { get; set; }
}

我的成员(member)课看起来像这样
 public class Member
{
[Key]
public int MemberID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Bio { get; set; }

public virtual ICollection<MemberCourseTaken> MemberCourseTakens { get; set; }
public virtual ICollection<Status> Statuses { get; set; }
public virtual ICollection<Club> FoundedClubs { get; set; }

public string EmailAddress { get; set; }
public string Password { get; set; }
public string Phone { get; set; }

public int AccountSourceID { get; set; }
public AccountSource AccountSource { get; set; }

public int AddressID { get; set; }
public Address Address { get; set; }
public string ProfilePhoto { get; set; }

public int MemberRankID { get; set; }
public MemberRank MemberRank { get; set; }
public DateTime Created { get; set; }
public DateTime Modified { get; set; }
}

无论出于何种原因,创建的数据库表具有以下列
StatusID
Name
MemberID
PosterID
Member_MemberID

MemberID , PosterID , 和 Member_MemberID是外键。

我怎样才能保留 Member_MemberID从被生成?

最佳答案

您的 Member_MemberID列的创建是因为 Member.Statuses属性(property)。我可以想象这不是你想要的。可能成员和状态应该彼此独立存在,因此您需要一个联结表。

我不知道你是否已经在使用 OnModelCreating覆盖 DbContext,但这是更改成员和状态之间映射的地方:

protected override void OnModelCreating(DbModelBuilder mb)
{
mb.Entity<Member>().HasMany(m => m.Statuses).WithMany();
}

这将创建一个表 MemberStatuses 表,其中两个 Id 列作为外键。这是一种在关联的“另一端”没有导航属性的情况下对多对多关系进行建模的方法。 (我认为您不需要 Members 中的 Status 属性)。

关于entity-framework - 为什么我会得到一个带有 Entity Framework 代码优先外键属性的额外外键列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10909061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com