public class Client
{
public Int32 ClientID { get; set; }
public virtual ICollection<Inquiry> InquiryManufacturers { get; set; }
public virtual ICollection<Product> Products { get; set; }
public virtual ICollection<Inquiry> InquiryRetailers { get; set; }
}
public class Product
{
public Int32 ProductID { get; set; }
public Int32 ClientID { get; set; }
public virtual Client Client { get; set; }
public virtual ICollection<Inquiry> Inquiries { get; set; }
}
public class Inquiry
{
public Int32 InquiryID { get; set; }
public Int32 ProductID { get; set; }
public Int32 ManufacturerID { get; set; }
public Int32 RetailerID { get; set; }
public virtual Product Product { get; set; }
public virtual Client Manufacturer { get; set; }
public virtual Client Retailer { get; set; }
}
La API fluida es tan¿Primer código que causa que la relación requerida sea opcional?
HasRequired(i => i.Product)
.WithMany(p => p.Inquiries);
HasRequired(i => i.Manufacturer)
.WithMany(p => p.InquiryManufacturers)
.HasForeignKey(p => p.ManufacturerID);
HasRequired(i => i.Retailer)
.WithMany(p => p.InquiryRetailers)
.HasForeignKey(p => p.RetailerID);
Así que aquí hay algunas clases que he definido. Tienen relaciones de la siguiente manera: Cliente & El producto tiene uno para muchos, Cliente & Consulta tiene uno para muchos y el Producto & Consulta tiene uno para muchos. Estoy usando Code First aquí. Ahora, usando una API fluida, he definido las relaciones, se supone que estas relaciones son obligatorias, lo que significa que el Cliente & La relación del producto no puede ser nula, así como el Cliente y la Consulta tampoco puede ser nula.
Sin embargo, la relación entre la consulta del cliente & está siendo forzada a ser una opción con el código primero. Cuando intento hacerlos necesarios, EF no genera la base de datos.
¿Puede alguien decirme qué problema hay en mi modelo que está causando que EF no cree una relación requerida entre el cliente & Inruiry? ¿Esto se debe a la eliminación de cascada? A medida que leo algunos, mssql solo puede tener una ruta de eliminación en cascada entre Cliente, Producto e Indagación. Cualquier explicación de ayuda sería agradable.
¿Estás recibiendo algún error? ¿A qué te refieres con "se lo está forzando a ser opcional"? – CDeutsch
no hay errores solo que la base de datos no se genera, pero si hago que el RetailerID y el ManufacturerID nulos y el Fluent Api como HasOptional se genera la base de datos. –
user781310
Por favor, publique la configuración de mapeo completa: todo lo que está relacionado con las 3 entidades que se discuten. Proporcione suficiente información para reproducir su situación. Además, ¿a qué motor de db te diriges? –