¿Cómo especifico ON DELETE NO ACTION Restricción de clave foránea en los diseños de mi modelo?Especifique ELIMINAR SIN ACCIÓN en ASP.NET MVC 4 C# Code First
En la actualidad, tengo:
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; }
}
Y mi DbContext:
public class MenuEntities : DbContext
{
public DbSet<Status> Statuses { get; set; }
public DbSet<Restaurant> Restaurants { get; set; }
public DbSet<Menu> Menus { get; set; }
}
Como se puede ver:
- un restaurante tiene muchos menús
- un restaurante tiene un estado
- a Menú pertenece a 1 restaurante
- Ambos restaurantes y menús tienen 1 estado. (Live, Invisible, Borrador)
Naturalmente, si se elimina un estado, que desde luego no quiere poner en cascada, ya que esto lodo todo.
ACTUALIZACIÓN:
Marcos Oreta menciones usando lo siguiente en su siguiente ejemplo:
modelBuilder.Entity<FirstEntity>()
.HasMany(f => f.SecondEntities)
.WithOptional()
.WillCascadeOnDelete(false);
¿Dónde pongo el código? Dentro de mi clase MenuEntities/DbContext? ¿Alguien puede dar un ejemplo de esto?
ACTUALIZACIÓN: Llegamos a este poco de trabajo ahora, sin embargo, esto ha creado un error de restricción de multiplicidad cuando se trata de sembrar el DB ...
Multiplicity constraint violated. The role 'Menu_Status_Source' of the relationship 'LaCascadaWebApi.Models.Menu_Status' has multiplicity 1 or 0..1.
mi base de datos initialiser:
¿Dónde está el método OnModelCreating? ¿Cómo puedo encontrarlo? – Gravy
Actualicé mi respuesta, pero la pondrías en tu clase de MenuEntities, no necesitarías poner tanto la eliminación de la convención como el mapeo fluido (elegir uno u otro), pero puse ambos para que pudieras ver cómo los usaría. –
Gracias Marcar, Actualizado, pero aún problemas ... Ver la actualización en la pregunta – Gravy