quiero definir [Required]
atributos de un tipo complejo en el marco de la entidad. Por ejemplo, tengo una entidad Customer
con un Address
opcional. La entidad de dirección tiene una propiedad PostCode
requerida.propiedades requeridas en tipos complejos opcionales de Entity Framework
[ComplexType]
public class Address {
public string Address1 { get; set; }
[Required]
public string PostCode { get; set; }
}
public class Customer {
public int CustomerId {get;set;}
public Address Address {get;set;}
}
NO quiero para almacenar mi tipo complejo como una entidad separada (no estoy realmente través de la dirección, esto sólo una ilustración sencilla del problema). No puedo dejar cliente.Direccion nula, ya que esto da el error:
Null value for non-nullable member. Member: 'Address'.
Si yo proporciono una entidad de direcciones vacía, falla la validación en el campo Código Postal debido a los atributos requeridos.
¿Hay alguna manera de lograr esto? Estoy usando EF5/NET4.5.
Realmente esperaba hacer esto sin una entidad diferente. Supongo que tendré que hacer una validación un poco diferente. Gracias por confirmar mis sospechas de todos modos! – Richard
Esta es una característica realmente mala de EF. Al usar la reflexión en un objeto Address, EF puede calcular fácilmente qué columnas crear en la creación de la tabla. No necesita tener una instancia de Dirección de la entidad para resolverlo. Y en la creación/actualización de entidades, si la propiedad ComplexType era nula, ¿qué tiene de difícil establecer nulas esas columnas en la base de datos? Esta debería ser una característica fácil de agregar a la próxima versión de EF IMO. – Ibraheem