在实体框架中使用不同名称映射外键两次

本文关键字:映射 两次 框架 实体 | 更新日期: 2023-09-27 17:57:48

我有一个MasterConfig表,我想在其中以CodeValue格式存储我的值。即

ID   CODE            VALUE
1.   BusinessType    IT
2.   BusinessType    Marketing
3.   ContractType    General
4.   ContractType    Custom

因此,要获得基于CODE字段的记录。例如,getCodeValue/CompactType

现在,我有一个Contract表,我必须将这些字段映射为外键。我的合同模型看起来像:

public class Contract
{
   [Key]
   public int ID{get; set;}
   public string Name{get; set;}
   [ForeignKey("CodeValue")]
   public int BusinessTypeID{get; set;}
   [ForeignKey("CodeValue")]
   public int ContractTypeID{get; set;}
   public virtual CodeValue CodeValue {get; set;}
}

在创建带有视图的控制器时,我收到错误"无法检索合同模型的元数据。无法映射字段"。

请给我一个实体框架(ASP.NET MVC)中的主配置关系的解决方案?

在实体框架中使用不同名称映射外键两次

它需要根据Contract类中的导航属性进行映射,如下所示:

public class Contract
{
   [Key]
   public int ID { get; set; }
   public string Name { get; set; }
   [ForeignKey("BusinessType")]
   public int BusinessTypeID { get; set; }
   [ForeignKey("ContractType")]
   public int ContractTypeID { get; set; }
   public virtual CodeValue BusinessType { get; set; }
   public virtual CodeValue ContractType { get; set; }
}