我正在尝试使用复合键在2个类之间创建一对一的关系。我之前在使用简单PK的类中完成了它并且它可以工作但现在我需要加入一个具有复合PK的类并且不起作用。
以下是代码,我正在尝试使用SFI_Clientes加入SFI_EstadisticaVentasFcst
public class SFI_Clientes
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
[Column(Order = 0)]
public string ID_Empresa { get; set; }
[Key]
[Column(Order = 1)]
public string ID_Cliente { get; set; }
[Key]
[Column(Order = 2)]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime Fecha_Desde { get; set; }
[Key]
[Column(Order = 3)]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime Fecha_Hasta { get; set; }
[DisplayName("NOMBRE")]
public string nombre { get; set; }
[DisplayName("ID VENDEDOR")]
public string ID_Vendedor { get; set; }
[DisplayName("ID NAM")]
public string ID_NAM { get; set; }
[DisplayName("ID KAM")]
public string ID_KAM { get; set; }
public virtual SFI_Vendedor vendedor { get; set; }
public virtual SFI_Kam kam { get; set; }
public virtual SFI_Nam nam { get; set; }
}
public class SFI_EstadisticaVentasFcst
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
[Column(Order = 0)]
[DisplayFormat(DataFormatString = "{0:0}")]
public decimal anio { get; set; }
[Key]
[Column(Order = 1)]
[DisplayFormat(DataFormatString = "{0:0}")]
public decimal periodo { get; set; }
[ForeignKey("cliente"), Column(Order = 0)]
public string ID_Empresa { get; set; }
[Key]
[ForeignKey("cliente"), Column(Order = 1)]
public string ID_Cliente { get; set; }
[Key]
[Column(Order = 3)]
public string producto { get; set; }
public decimal fcst_cajas { get; set; }
public decimal fcst_niv { get; set; }
public decimal fcst_gsu { get; set; }
public decimal venta_cajas { get; set; }
public decimal venta_niv { get; set; }
public decimal venta_gsu { get; set; }
public decimal avance_cajas { get; set; }
public decimal avance_gsu {get; set; }
public virtual SFI_Clientes cliente { get; set; }
public virtual SFI_JerarquiaProductos jerarquiaProductos { get; set; }
这是问题所在:
public JsonResult cargarListaEmpresas(string idEmpresa, string cliente, string vendedor, string nam, string kam, string categoriaProductos, DateTime fechaDesde, DateTime fechaHasta )
{
var c = db.SFI_EstadisticaVentasFcstDbSet.Where
(x =>
(string.IsNullOrEmpty(idEmpresa) ? true : x.ID_Empresa== idEmpresa) &&
(string.IsNullOrEmpty(cliente) ? true : x.ID_Cliente == cliente) &&
(string.IsNullOrEmpty(vendedor) ? true : x.cliente.ID_Vendedor == vendedor) &&
(string.IsNullOrEmpty(kam) ? true : x.cliente.ID_KAM == kam) &&
(string.IsNullOrEmpty(nam) ? true : x.cliente.ID_NAM == nam) &&
(string.IsNullOrEmpty(categoriaProductos) ? true : x.jerarquiaProductos.descripcion_1 == categoriaProductos) &&
(x.cliente.Fecha_Desde == fechaDesde) &&
(x.cliente.Fecha_Hasta == fechaHasta)
).Distinct().OrderBy(s => s.ID_Empresa).Select(x => new SelectListItem
{
Text = x.ID_Empresa.ToString(),
Value = x.ID_Empresa
}).Distinct().OrderBy(x => x.Text).ToList();
ViewBag.empresas = c;
return Json(c, JsonRequestBehavior.AllowGet);
}
错误是: “在模型生成期间检测到一个或多个验证错误: SFI_EstadisticaVentasFcst_cliente_Target_SFI_EstadisticaVentasFcst_cliente_Source ::关系约束中的从属角色和主要角色中的属性数必须相同。“