Как мне указать ON DELETE NO ACTION Внешнее ограничение ключа в моих моделях модели?
В настоящее время у меня есть:
public class Status
{
[Required]
public int StatusId { get; set; }
[Required]
[DisplayName("Status")]
public string Name { get; set; }
}
public class Restuarant
{
public int RestaurantId { get; set; }
[Required]
public string Name { get; set; }
[Required]
[EmailAddress]
public string Email { get; set; }
[Required]
public string Telephone { get; set; }
[Required]
public int StatusId { get; set; }
public List<Menu> Menus { get; set; }
// NAVIGATION PROPERTIES
public virtual Status Status { get; set; }
}
public class Menu
{
public int MenuId { get; set; }
[Required]
public int RestaurantId { get; set; }
[Required]
public string Name { get; set; }
[Required]
public int StatusId { get; set; }
// NAVIGATION PROPERTIES
public virtual Status Status { get; set; }
public virtual Restaurant Restaurant { get; set; }
}
И мой DbContext:
public class MenuEntities : DbContext
{
public DbSet<Status> Statuses { get; set; }
public DbSet<Restaurant> Restaurants { get; set; }
public DbSet<Menu> Menus { get; set; }
}
Как вы можете видеть:
- В ресторане есть много меню.
- Ресторан имеет один статус.
- a Меню принадлежит 1 ресторану
- Обе рестораны и меню имеют 1 статус. (Live, Invisible, Draft)
Естественно, если статус удаляется, я, конечно, не хочу каскад, так как это все испортит.
UPDATE:
Марк Орета упоминает следующее в следующем примере:
modelBuilder.Entity<FirstEntity>()
.HasMany(f => f.SecondEntities)
.WithOptional()
.WillCascadeOnDelete(false);
Где я могу поместить этот код? В моем классе MenuEntities/DbContext? Может ли кто-нибудь привести пример этого использования?
UPDATE: Получил этот бит, работающий сейчас, однако это создало ошибку ограничения множественности при попытке засеять DB...
Multiplicity constraint violated. The role 'Menu_Status_Source' of the relationship 'LaCascadaWebApi.Models.Menu_Status' has multiplicity 1 or 0..1.
Мой инициализатор базы данных: