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