asp.net 在Entity Framework中配置自动生成表

lvjbypge  于 2024-01-09  发布在  .NET
关注(0)|答案(2)|浏览(157)

我有麻烦试图弄清楚如何重命名和配置一个自动生成的表,从实体框架。
下面是我的代码:

public class ApplicationUser : IdentityUser
 {
     public virtual List<ApplicationUser> AddingFriends { get; set; }
     public virtual List<ApplicationUser> AddedFriends { get; set; }
 }

字符串
这些实体一旦迁移到数据库中,表示的结果如下:

所以我基本上只想重命名这个表和它的列名。除此之外,我还想为被阻止的人创建第二个表,它将具有相同的实体列表。所以基本上,当我添加两个其他应用程序用户列表时,它将这些属性绑定到下面显示的实际表。有没有一种方法可以控制生成的表并正确配置它们?
先谢谢你。干杯。

xhv8bpkk

xhv8bpkk1#

您正在使用代码优先方法,这将跟踪模型和与该模型对应的数据库表。因此,您不能更改模型。选项是启用迁移或禁用模型检查。
检查此链接的迁移
https://learn.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an-asp-net-mvc-application

2ekbmq32

2ekbmq322#

在查看了Fluent API文档之后,我发现我可以通过将这些代码行添加到OnModelCreating方法来配置它:

modelBuilder.Entity<ApplicationUser>()
            .HasMany(c => c.AddedFriends)
            .WithMany(c => c.AddingFriends)
            .Map(m =>
            {
                m.ToTable("Friends");
                m.MapLeftKey("AddedUser");
                m.MapRightKey("AddingUser");
            });
modelBuilder.Entity<ApplicationUser>()
            .HasMany(c => c.BloquedUsers)
            .WithMany(c => c.BloquingUsers)
            .Map(m =>
            {
                m.ToTable("Bloqueds");
                m.MapLeftKey("BloquingUser");
                m.MapRightKey("BloquedUser");
            });

字符串
谢谢你的回答。

相关问题