2011-10-12 19 views
8

He la clase siguiente:Código EF Primera - API Fluido (WithRequiredDependent y WithRequiredPrincipal)

public class User 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
    public Couple Couple { get; set; } 
} 

public class Couple 
{ 
    public Guid Id { get; set; } 
    public User Groom { get; set; } 
    public User Bride { get; set; } 
} 

puntos importantes:

  1. Bride y Groom propiedades son necesarias
  2. Uno relación uno a uno
  3. En la clase User, es necesaria Couple

DbContext en OnModelCreating

modelBuilder.Entity<User>().HasRequired(u => u.Couple).WithRequiredPrincipal(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Bride).WithRequiredDependent(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Groom).WithRequiredDependent(); 

Pero no se puede exigir!

¡Todos los archivos con nulo en la base de datos !.

¿Cómo obtengo los campos en la base de datos como no nulos? Si es posible usando el API Flient.

Respuesta

5

Debe ser esto:

modelBuilder.Entity<User>().HasRequired(u => u.Couple).WithRequiredDependent(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Bride).WithRequiredDependent(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Groom).WithRequiredDependent(); 

Cómo funciona WithRequiredDependent: configura la relación de ser requerida: requerida sin una propiedad de navegación en el otro lado de la relación. El tipo de entidad que se configurará será el dependiente y contendrá una clave externa al principal. La entidad escribe que los objetivos de la relación serán el principal en la relación.


Significado: Vamos a considerar su primera línea de código aquí. Se crea una clave externa de la entidad que está siendo configurado (usuario) por lo que es dependiente y hacer que el otro lado de la relación (Pareja) principal


Importante: Don ¿Crees que la configuración que deseas generará un punto muerto? No he probado el código anterior, pero esta configuración parece ser un punto muerto para mí, así que no estoy seguro de si EF te permite crearla. El usuario debe necesitar un par, y la pareja debe necesitar ese mismo usuario, supongo.

Cuestiones relacionadas