我有以下的類(即我不能更新,添加屬性或添加註釋):如何在實體框架6中使用Fluent API來映射沒有外鍵屬性的一對多對象列表?
public class ApprovalRuleset
{
public Guid Id { get; set; }
public List<ApprovalRule> ApprovalRules { get; protected internal set; }
}
public class ApprovalRule
{
public Guid Id { get; set; }
public string Value { get; protected internal set; }
}
我嘗試寫一些流利的API代碼與實體框架6將它們映射到兩張桌子。
這是ApprovalRule配置:
public class ApprovalRuleEntityConfiguration : EntityTypeConfiguration<ApprovalRule>
{
public ApprovalRuleEntityConfiguration()
{
HasKey(x => x.Id);
Property(x => x.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Property(x => x.Value).IsRequired().HasMaxLength(450);
}
}
到目前爲止我有:
public class ApprovalRulesetEntityConfiguration : EntityTypeConfiguration<ApprovalRuleset>
{
public ApprovalRulesetEntityConfiguration()
{
HasKey(x => x.Id);
Property(x => x.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
HasMany(x => x.ApprovalRules);
}
}
上表的外鍵 'ApprovalRules' 的列 'ApprovalRuleset_Id' 不能因爲主鍵 列無法確定而創建。使用AddForeignKey fluent API至 完全指定外鍵。
public class ApprovalRulesetEntityConfiguration : EntityTypeConfiguration<ApprovalRuleset>
{
public ApprovalRulesetEntityConfiguration()
{
HasKey(x => x.Id);
Property(x => x.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
HasRequired(x => x.ApprovalRules)
.WithMany()
.HasForeignKey(x => x.Id);
}
}
多重衝突與在關係 「ApprovalRuleset_ApprovalRules的角色 'ApprovalRuleset_ApprovalRules_Target' 的引用約束。由於 從屬角色中的所有屬性都是不可空的,因此主體角色 的多重性必須爲'1'。
我錯過了什麼?我花了很多年尋找堆棧溢出和谷歌。
'的hasMany(X => x.ApprovalRules)'是正確的配置,雖然沒有它的事件按照慣例,你應該得到你想要的。你可以顯示「ApprovalRule」配置嗎? –
原來,如果我有一個空白數據庫,它與HasMany運行正常(x => x.ApprovalRules) – chris31389