我有一个模板类
public class Template
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Category> Categories { get; set; }
public virtual Template RelatedTemplate { get; set; }
public virtual Field RelatedTemplatePrimaryField { get; set; }
public virtual ICollection<Field> Fields { get; set; }
}
字段类
public class Field
{
public int Id { get; set; }
public string Name { get; set; }
public int Min { get; set; }
public int Max { get; set; }
public bool AllowEmpty { get; set; }
public bool IsCollection { get; set; }
public virtual ICollection<Template> Templates { get; set; }
}
问题是它没有创建多对多的关系,它只是在字段表上添加了一个FK,我想要多对多的关系
Fields ICollection<Field> Fields
和
ICollection<Template> Templates
编辑: 如果我删除
public virtual Template RelatedTemplate { get; set; }
public virtual Field RelatedTemplatePrimaryField { get; set; }
它有效......有什么想法吗?
答案 0 :(得分:4)
在这种情况下,您必须帮助EF正确识别您的关系。您可以通过数据注释来实现:
[InverseProperty("Fields")]
public virtual ICollection<Template> Templates { get; set; }
或通过fluent-API:
modelBuilder.Entity<Template>()
.HasMany(t => t.Fields)
.WithMany(f => f.Templates);