visual tutorial studio mvc framework first español code entity-framework entity-framework-4.1 ef-code-first parent-child self-reference

tutorial - Referencia de sí mismo/relación padre-hijo en Entity Framework



entity framework visual studio 2017 (1)

Debe definir ParentId en la clase de categoría como anulable para usarlo como la propiedad de clave externa para una relación opcional :

public int? ParentId { get; set; }

Una propiedad int no puede tomar el valor null y, por lo tanto, no puede representar un valor NULL como en una columna de base de datos.

Leí una gran cantidad de publicaciones de programadores que se ejecutan en el No se puede determinar un orden válido para las operaciones dependientes. Las dependencias pueden existir debido a restricciones de clave externa, requisitos del modelo o valores generados por la tienda, excepto cuando se utiliza una relación de autorreferencia en Entity Framework.

Estoy tratando de hacer que una relación padre-hijo funcione:

public class Category { public int CategoryId { get; set; } public string Name { get; set; } public int ParentId { get; set; } public Category Parent { get; set; } public List<Category> Children { get; set; } }

Esta es la configuración que uso (Fluent API):

Property(c => c.ParentId).IsOptional(); HasMany(c => c.Children).WithOptional(c => c.Parent).HasForeignKey(c => c.ParentId); //HasOptional(c => c.Parent).WithMany(c => c.Children).HasForeignKey(c => c.ParentId);

Las configuraciones HasMany () y HasOptional () dan como resultado una excepción "No se puede determinar un pedido válido para operaciones dependientes ..." cuando intento guardar una nueva categoría como esta:

context.Categories.Add(new Category { Name = "test" });

No entiendo por qué EF no inserta la Categoría con un ID de padre nulo. La base de datos permite que la clave foránea ParentId sea nula.

¿Podrías decirme cómo hacer esto?