在实体框架中配置自动生成的表

时间:2017-04-28 13:45:24

标签: c# asp.net entity-framework asp.net-identity

我在尝试从实体框架中弄清楚如何重命名和配置自动生成的表时遇到了麻烦。 这是我的代码:

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

迁移到数据库后,这些实体表示的结果如下: GeneratedTables

所以我基本上只想重命名这个表及它的列名。 除此之外,我还想为那些拥有相同实体列表的人们创建第二个表格。所以基本上当我添加另外两个应用程序用户列表时,它会将这些属性绑定到下面显示的实际表中。 有没有办法控制这些表生成并正确配置它们?

提前致谢。欢呼声。

2 个答案:

答案 0 :(得分:1)

您正在使用代码优先方法,这会跟踪与该模型对应的模型和数据库表。因此,您无法更改模型。选项是启用迁移或禁用模型检查。
检查此链接是否有https://docs.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

答案 1 :(得分:0)

在查看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");
            });

感谢您的回答。