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外键到非主键字段