entity framework6.1.3将外键映射到非主键

目标是使用GravityZone中的所有字段以及来自Zone表的区域名称的API。 我已经尝试了以下代码的几种排列而没有成功。 它目前为区域提供null,我希望将该名称作为字符串或对象的一部分。 我正在使用我无法修改的现有表。

楷模:

public partial class Zone { [Key] [Column("ZONE_ID")] public decimal ZoneId { get; set; } [Column("ZONE_CODE")] public decimal ZoneCode { get; set; } [Column("ZONE_NAME")] public string ZoneName { get; set; } public virtual ICollection GravityZones { get; set; } } public partial class GravityZone { [Key] [Column("GRAVITY_ID")] public decimal GravityZoneId { get; set; } [Column("ZONE_CODE")] public decimal ZoneCode { get; set; } [Column("ELEVATION")] public decimal Elevation { get; set; } [Column("REMARK")] [StringLength(2000)] public string Remark { get; set; } public virtual Zone Zone { get; set; } } 

上下文(仅关系部分)

 modelBuilder.Entity() .HasKey(e => e.ZoneCode); modelBuilder.Entity() .HasRequired(e => e.Zones); 

除了这部分外,其他所有内容都很棒:

"Zones":null,

现在可以在Entity Framework 7(即EF Core 1.0)中实现。

来自.Net Entity Framework用户语音唯一约束(即候选键)支持

EF Core 1.0中添加了对此function的支持,我们没有计划将其添加到EF6代码库中。

我不认为这是可能的,因为它会造成很多麻烦。 外键应始终指向表的某个键。 我认为你无法告诉EF有关候选键的信息。

编辑:

类似问题: Entity Framework 5.0复合外键到非主键 – 是否可能?

这是你的问题的答案。 我认为EF除了主键外没有理解唯一性的概念。

entity framework外键到非主键字段