我首先使用 Entity Framework 5 代码......我有一个应用实体:
public class App
{
public long Id { get; set; }
public ICollection<Field> Fields { get; set; }
public Field TitleField { get; set; }
}
以及相关的字段实体:
public class Field
{
public long Id { get; set; }
[Timestamp]
public byte[] LastUpdate { get; set; }
public App App { get; set; }
[MaxLength(50)]
public string Identifier { get; set; }
public FieldType Type { get; set; }
public string Label { get; set; }
public int? Length { get; set; }
public bool Required { get; set; }
}
我已将 TitleField 添加到 App 并想配置 0..1 关系。我在流畅的配置中尝试了 HasOptional\WithOptional\Dependant\Principal 的各种组合,但是当我脚手架迁移时,我总是得到:
public override void Up()
{
AddColumn("dbo.Apps", "TitleField_Id", c => c.Long());
AddColumn("dbo.Fields", "App_Id1", c => c.Long());
AddForeignKey("dbo.Apps", "TitleField_Id", "dbo.Fields", "Id");
AddForeignKey("dbo.Fields", "App_Id1", "dbo.Apps", "Id");
CreateIndex("dbo.Apps", "TitleField_Id");
CreateIndex("dbo.Fields", "App_Id1");
}
当 App 上的外键足以完成这项工作时,为什么它认为我在关系的双方都需要一个外键?1..Many 应用程序与字段的关系可能会使事情变得混乱,这就是为什么我试图使用流利的配置来明确的原因。
如前所述,这没有什么区别,我已经尝试了所有我能想到的合理组合(甚至一些不是),并且每次我得到相同的迁移。
任何帮助将不胜感激,如果您需要更多信息,请告诉我。
皮特