gpt4 book ai didi

c# - 当两个类之间有多个不同的(一对多、多对多)关系时如何注释模型类

转载 作者:行者123 更新时间:2023-11-30 21:50:47 24 4
gpt4 key购买 nike

我正在尝试将代码优先和数据注释与 EF 6.0 一起使用,具有以下非常简单的两个类模型:基本上是可以成为事件组织者和参与者的员工:

public class Employee
{
[Key]
public Guid Id { get; set; }
public string name { get; set; }

public virtual ICollection<Event> event { get; set; }
}

public class Event
{
[Key]
public Guid Id { get; set; }
public string name { get; set; }

[ForeignKey("organizer")]
public Guid organizerId { get; set; }
public virtual Employee organizer { get; set; }

public virtual ICollection<Employee> atendees { get; set; }
}

当我让 EF 从这些类生成数据库时,它令人惊讶地没有生成 Employee 和 Event 之间的多对多关系(因此,没有 EmployeeEvent 多对多表),而是生成一个事件 ID员工中的外键。 (我不知道为什么。)

当然,我可以使用 fluent-APIs 直接创建正确的数据库映射,但我想知道是否有一种方法可以通过数据注释实现这一点。

最佳答案

我认为 Employee 组织者 混淆 到 EF,这就是为什么 Ef 认为 你有一对多的关系;如果是这种情况,那么您可以像@Corak 所说的那样使用InverseProperty 来解决

public class Employee
{
[Key]
public Guid Id { get; set; }
public string name { get; set; }

[InverseProperty("atendees")]
public virtual ICollection<Event> event { get; set; }
}

public class Event
{
[Key]
public Guid Id { get; set; }
public string name { get; set; }

[ForeignKey("organizer")]
public Guid organizerId { get; set; }
public virtual Employee organizer { get; set; }

[InverseProperty("event")]
public virtual ICollection<Employee> atendees { get; set; }
}

这应该足以解决没有 Fluent API 的问题

此外,有关InverseProperty 的更多信息,您可以查看this answer

关于c# - 当两个类之间有多个不同的(一对多、多对多)关系时如何注释模型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36158610/

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