User
ドメイン モデルに、構成設定のリストを含むオブジェクトがあります。次のようになります。
public class User
{
public int ID { get; set; }
/* various user properties */
public List<ConfigurationSetting> Settings { get; set; }
}
構成設定には次の定義があります。
public class ConfigurationSetting
{
public int ID { get; set; }
public string Name { get; set; }
public string Value { get; set; }
public MasterAccount Account { get; set; }
}
ご覧のとおり、構成クラスには逆ナビゲーション プロパティはありません。これは、設定が にアタッチされ、MasterAccount
オプションで に適用されるUser
ため、マッピング テーブルが必要になるためです。
UserConfiguration
次のように、構成で関係を作成しようとしています。
HasMany(x => x.Settings)
.WithMany()
.Map(m =>
{
m.ToTable("MapUserSettings");
m.MapLeftKey("UserId");
m.MapRightKey("SettingId");
});
ID の名前は次のように変更されることに注意してください。
HasKey(x => x.ID);
Property(x => x.ID)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
.HasColumnName("UserId");
EF Code First がモデルを作成しようとすると、次のようになります。
'FK_dbo.MapUserSettings_dbo.Settings_SettingId' on table 'MapUserSettings' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
カスケードを正しく構成するにはどうすればよいですか?