我有这个实体:
public abstract class DataField
{
[Key]
public Guid Id { get; set; }
public virtual ICollection<DataField> Referals { get; set; }
public virtual ICollection<DataField> Encapsulated { get; set; }
}
还有这张地图:
public class DataFieldMapping : EntityTypeConfiguration<DataField>
{
public DataFieldMapping()
{
HasMany(x => x.Referals).WithMany(x => x.Encapsulated);
HasMany(x => x.Encapsulated).WithMany(x => x.Referals);
ToTable("DataField");
}
}
关键是一个 DataField 可以有许多封装的 DataField,并且它本身可以被许多其他 DataField 封装/引用。
我不确定是否需要两条 HasMany 行。但...
当我运行创建两个 DataField 的测试时,一个引用另一个,另一个被第一个封装,我收到此错误:
无效的对象名称“dbo.DataFieldDataFields”。
我认为有必要将多对多关系存储在单独的表中。所以我想如果我用正确的列创建一个名为 DataFieldDataFields 的表,事情会奏效。但是有没有办法告诉 EF 这个表被称为 DataFieldDataFields 以外的东西?
编辑:我现在创建了那个表,它可以工作。但 EF 期望该表的列被命名为 DataField_Id 和 DataField_Id1。所以同样的问题:如果我希望将列和表命名为其他名称,有没有办法告诉 EF 这些列的名称和表本身的名称?