67

que tiene un modelo User < Country. Un usuario pertenece a un país, pero puede no pertenecer a ninguna (clave externa nula).Entidad marco de código primer nulo clave externa

¿Cómo puedo configurar esto? Cuando intento insertar un usuario con un país nulo, me dice que no puede ser nulo.

El modelo es el siguiente:

public class User{ 
    public int CountryId { get; set; } 
    public Country Country { get; set; } 
} 

public class Country{ 
    public List<User> Users {get; set;} 
    public int CountryId {get; set;} 
} 

error: A foreign key value cannot be inserted because a corresponding primary key value does not exist. [ Foreign key constraint name = Country_Users ]"}

+0

Puede usted amablemente me corrija si estoy equivocado. Una clave foránea es NULLABLE por DEFAULT en el código first asp.net mvc - 5 entity framework. – Unbreakable

+0

Si queremos que no sea anulable. necesitamos usar una API fluida si no, decorar con el atributo "Requerido". ¿Estoy en lo correcto? – Unbreakable

+0

Si no hacemos ni entonces Clave externa será anulable por defecto en – Unbreakable

Respuesta

115

Debe realizar su anulable clave externa:

public class User 
{ 
    public int Id { get; set; } 
    public int? CountryId { get; set; } 
    public virtual Country Country { get; set; } 
} 
+4

¿Qué hace el virtual? –

+17

Virtual es necesario para la carga diferida. –

+0

Virtual también agrega seguimiento de cambios, que no siempre se desea. Casi el único momento que queremos que sea virtual es en colecciones, pero YMMV. –

Cuestiones relacionadas