C# 实体框架代码优先:自定义映射 公共类用户 { 公共int Id{get;set;} 公共字符串名称{get;set} 公共ICollection Followers{get;set;} 在{get;set;}之后的公共ICollection }

C# 实体框架代码优先:自定义映射 公共类用户 { 公共int Id{get;set;} 公共字符串名称{get;set} 公共ICollection Followers{get;set;} 在{get;set;}之后的公共ICollection },c#,entity-framework,entity-framework-4,entity-framework-4.1,entity-relationship,C#,Entity Framework,Entity Framework 4,Entity Framework 4.1,Entity Relationship,我的模型如上所示,Entity framework自动创建一个表,并在DB中创建一个带有行User\u ID和User\u ID 1的UserUser,以映射此模型。我想自己映射那个表和行 我怎么能这么做,Thanx 关于: 多对多协会 类别和项目之间的关联是多对多的 关联,如上面的类图所示。多对多 关联映射将中间关联表隐藏在 应用程序,这样就不会在应用程序中出现不需要的实体 域模型。也就是说,在实际系统中,您可能没有 多对多的联想,因为我的经验是,几乎没有 始终提供必须附加到每个链接的其他信息

我的模型如上所示,Entity framework自动创建一个表,并在DB中创建一个带有行
User\u ID
User\u ID 1
UserUser,以映射此模型。我想自己映射那个表和行

我怎么能这么做,Thanx

关于:

多对多协会 类别和项目之间的关联是多对多的 关联,如上面的类图所示。多对多 关联映射将中间关联表隐藏在 应用程序,这样就不会在应用程序中出现不需要的实体 域模型。也就是说,在实际系统中,您可能没有 多对多的联想,因为我的经验是,几乎没有 始终提供必须附加到每个链接的其他信息 关联实例(例如添加项目的日期和时间) 表示该信息的最佳方式是 通过中间关联类(在EF中,您可以映射 关联类作为一个实体,并映射两个一对多关联 任何一方)

在多对多关系中,连接表(或链接表,如某些 开发人员将其称为“外键”,它有两列:类别的外键 和项目表。主键是两列的组合 代码首先,可以使用自定义多对多关联映射 像这样流畅的API代码:


祝你好运,希望这对你有帮助

要将实体映射到自身,您可以执行以下操作

  protected override void OnModelCreating(ModelBuilder modelBuilder)
  {
    base.OnModelCreating(modelBuilder);

    modelBuilder.Configurations.Add(new ItemConfiguration());
  }
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity().HasMany(u=>u.Followers)
.WithMany().ForeignKey(u=>u.FollowerId);
基于模型创建(modelBuilder);
}
但是,如果看不到您的数据库模型,以及您如何将追随者与用户联系起来,就很难判断

    class ItemConfiguration : EntityTypeConfiguration<Item> {
    internal ItemConfiguration()
    {
        this.HasMany(i => i.Categories)
            .WithMany(c => c.Items)
            .Map(mc =>
            {
                mc.MapLeftKey("ItemId");
                mc.MapRightKey("CategoryId");
                mc.ToTable("ItemCategory");
            });
    } }
  protected override void OnModelCreating(ModelBuilder modelBuilder)
  {
    base.OnModelCreating(modelBuilder);

    modelBuilder.Configurations.Add(new ItemConfiguration());
  }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<User>().HasMany(u => u.Followers)
        .WithMany().ForeignKey(u => u.FollowerId);

    base.OnModelCreating(modelBuilder);
}