カスケードルール「Set Null」を持つ1対多の関係をどのように設定するのか疑問に思っていました。ここに私が使用している2つのエンティティがあります。StandradRelay は、RelayConfig と 1 対多の関係にあります。
public class StandardRelay {
...
public virtual ICollection<RelayConfig> RelayConfigs { get; set; }
}
public class RelayConfig {
...
public virtual StandardRelay StandardRelay { get; set; }
}
デフォルトでは、上記のコードは"No Action"の Cascade ルールになります。ということで、以下の流暢なAPIでDbModelBuilderを使ってみました。
modelBuilder.Entity<StandardRelay>()
.HasMany<RelayConfig>(s => s.RelayConfigs)
.WithOptional(r => r.StandardRelay)
.WillCascadeOnDelete(false);
これもまた、 「アクションなし」のカスケード ルールになります。次に、次のことを試しました
modelBuilder.Entity<StandardRelay>()
.HasMany<RelayConfig>(s => s.RelayConfigs)
.WithOptional(r => r.StandardRelay)
.WillCascadeOnDelete(true);
これにより、 「削除」のカスケード ルールが発生します。
つまり、「Set Null」のカスケード ルールを設定するオプションはありません。同じものをどのように構成しますか?