如何禁止自动创建关联表EF

时间:2016-11-23 06:43:25

标签: c# entity-framework ef-code-first

我需要关联表来实现InspChars和Materials之间的M:M关系,但是应该有一个额外的字段。这就是我创建另一个表InspCharsToMaterials的原因。 一切正常,但是ef创建了自己生成的自动关联表,我根本不需要。

如何应对?如何关闭ef的这种可能性(仅适用于多对多)。

[Table("tbl_Materials")]
public class Material
{
    [Key]
    public int key { get; set; }

    [Required]
    [Column(TypeName = "NVARCHAR")]
    [StringLength(18)]
    public string MaterialID { get; set; }

    [Required]
    [Column(TypeName = "NVARCHAR")]
    [StringLength(128)]
    public string MaterialName { get; set; }

    [Column(TypeName = "bit")]
    public bool Deleted { get; set; }
    public virtual ICollection<InspectionCharacteristic> InspCharLinks { get; set; }
}



[Table("tbl_InspectionCharacteristic")]
public class InspectionCharacteristic
{  
    [Key]
    [Required]
    public int key { get; set; }

    [Required]
    [Column(TypeName = "NVARCHAR")]
    [StringLength(40)]
    public string InspCharID { get; set; }

    [Required]
    [Column(TypeName = "NVARCHAR")]
    [StringLength(40)]
    public string InspCharName { get; set; }

    [Column(TypeName ="BIT")]
    public bool IsCatalogType { get; set; }

    /*[Column(TypeName = "NVARCHAR")]
    [StringLength(8)]
    public string CatalogGroupLink { get; set; }*/

    [Column("CatalogGroupID")]
    public int? CatalogGroupKeyID { get; set; }
    //public virtual CatalogGroup CatalogGroup { get; set; }
    public virtual ICollection<Material> Materials { get; set; }

}

我的关联表:

[Table("tbl_InspCharToMaterials")]
public class InspCharToMaterial
{
    [Key]
    public int key { get; set; }

    public virtual Material Material { get; set; }
    public virtual InspectionCharacteristic InspectionCharacteristic { get; set; }
    public bool Deleted { get; set; }

}

1 个答案:

答案 0 :(得分:1)

使用public virtual ICollection<Material> Materials { get; set; }替换InspectionCharacteristic上的public virtual ICollection<InspectionCharacteristic> InspCharLinks { get; set; }Material上的public virtual ICollection<InspCharToMaterial> InspCharToMaterials { get; set; };