C# 实体框架自动创建多对多联接表并忽略我的

C# 实体框架自动创建多对多联接表并忽略我的,c#,asp.net,sql,entity-framework,C#,Asp.net,Sql,Entity Framework,我正在尝试为多对多建立一个具有有效负载的联接表。我有以下实体和fluent API,我希望它们能够覆盖这种自动干扰。但是EF继续创建自己的表版本,而不使用有效负载,并将其用于关系。我怎么能阻止它这么做呢 使用EF6 public class Property { public int PropertyId { get; set; } public virtual ICollection<ShowcaseUser> ShowcaseUse

我正在尝试为多对多建立一个具有有效负载的联接表。我有以下实体和fluent API,我希望它们能够覆盖这种自动干扰。但是EF继续创建自己的表版本,而不使用有效负载,并将其用于关系。我怎么能阻止它这么做呢

使用EF6

    public class Property
    {
        public int PropertyId { get; set; }
        public virtual ICollection<ShowcaseUser> ShowcaseUsers{ get; set; }
        ...
        public virtual ICollection<ShowcaseUserProperties> ShowcaseUserProperties { get; set; }

    public class ShowcaseUser : IdentityUser
    {
        // IdentityUser contains string Id as its id
        public virtual ICollection<Property> Properties { get; set; }
        ...
        public virtual ICollection<ShowcaseUserProperties> ShowcaseUserProperties { get; set; }
    }

public class ShowcaseUserProperties
{
    public string ShowcaseUser_Id { get; set; }

    public int Property_PropertyId { get; set; }        

    public bool Subscribed { get; set; }

    public virtual Property Property { get; set; }
    public virtual ShowcaseUser ShowcaseUser { get; set; }
}

     modelBuilder.Entity<ShowcaseUserProperties>()
                .HasKey(c => new { c.ShowcaseUser_Id, c.Property_PropertyId }).ToTable("ShowcaseUserProperties");

            modelBuilder.Entity<ShowcaseUserProperties>()
                .HasRequired(t=>t.Property)
                .WithMany(t=>t.ShowcaseUserProperties)
                .HasForeignKey(t => t.Property_PropertyId);

            modelBuilder.Entity<ShowcaseUserProperties>()
                .HasRequired(t => t.ShowcaseUser)
                .WithMany(t => t.ShowcaseUserProperties)
                .HasForeignKey(t => t.ShowcaseUser_Id);
公共类属性
{
公共int属性ID{get;set;}
公共虚拟ICollection ShowcaseUsers{get;set;}
...
公共虚拟ICollection ShowcaseUserProperties{get;set;}
公共类Showcase用户:IdentityUser
{
//IdentityUser包含字符串Id作为其Id
公共虚拟ICollection属性{get;set;}
...
公共虚拟ICollection ShowcaseUserProperties{get;set;}
}
公共类ShowcaseUserProperties
{
公共字符串ShowcaseUser_Id{get;set;}
公共int属性_PropertyId{get;set;}
公共bool订阅{get;set;}
公共虚拟财产属性{get;set;}
公共虚拟ShowcaseUser ShowcaseUser{get;set;}
}
modelBuilder.Entity()
.HasKey(c=>new{c.ShowcaseUser\u Id,c.Property\u PropertyId}).ToTable(“showcaseurperties”);
modelBuilder.Entity()
.HasRequired(t=>t.Property)
.WithMany(t=>t.ShowcaseUserProperties)
.HasForeignKey(t=>t.Property\u PropertyId);
modelBuilder.Entity()
.HasRequired(t=>t.ShowcaseUser)
.WithMany(t=>t.ShowcaseUserProperties)
.HasForeignKey(t=>t.showcase用户Id);

我假设两个实体中都没有相互收集属性(比如
Property.ShowcaseUsers
?你能发布完整的类吗,我想除了showcaseUserProperties之外,你还有其他对彼此的引用。你是对的。我有其他字段引用。我猜这会导致两种关系?是的,你可以有真正的多对多关联(使用
Property.ShowcaseUsers
和reverse,以及透明连接表)或1-n-1,使用
ShowcaseUserProperties
作为在类模型中可见的连接类。