gpt4 book ai didi

c# - 我需要在 OnModelCreating(DbModelBuilder modelBuilder) 函数中添加什么来定义 Person 和 Role 之间的关系?

转载 作者:可可西里 更新时间:2023-11-01 07:55:29 26 4
gpt4 key购买 nike

我在 WinForms 项目 .net 4.5 中使用 EntityFramework 5.0 版。

我已经为我创建了 2 个重要的实体

    public class Role
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public bool StockPermission { get; set; }
public bool ItemPermission { get; set; }
public bool OrderPermission { get; set; }
public bool PersonPermission { get; set; }
public bool StatisticPermission { get; set; }
}

public class Person
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public String Name { get; set; }
public String Nickname { get; set; }
public String Contact { get; set; }
public System.DateTime Created { get; set; }
public String Pincode { get; set; }

public virtual ICollection<Role> Role { get; set; }
public virtual Person Creator { get; set; }
}

和 dbContext 类:

    public class SusibarDbContext : DbContext
{
public DbSet<Entity.Role> Roles { get; set; }
public DbSet<Entity.Person> Persons { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//base.OnModelCreating(modelBuilder);
}
}

请问,你能帮我在 OnModelCreating(DbModelBuilder modelBuilder) 函数中添加什么来定义 Person 和 Role 之间的关系吗?

一个人可以有多个角色(但不能为空),不同的人可以有相同的角色。

一个人可以有一个“创造者”Person(可以为空),不同的Person可以有同一个“创造者”

如果你能这么好心,请告诉我解决方案:-(

最佳答案

如果你想为它使用 Fluent API,请查看 this topic来自MSDN。您应该使用多对多关系,当 Person 可以有很多 Roles 而 Role 有很多 Persons 时,EF 会创建一个表。像这样:

modelBuilder.Entity<Person>().HasMany(x => x.Roles).WithMany();

您也可以在不使用 Fluent API 的情况下创建这种关系。您应该创建导航属性 ICollection<Person> Persons在 Role 类中,EF 也将创建适当的表和关系。

关于c# - 我需要在 OnModelCreating(DbModelBuilder modelBuilder) 函数中添加什么来定义 Person 和 Role 之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13755163/

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