我有以下型号EF6流利的API地图相关实体在自定义按键/属性不PK
public class Rate
{
public Guid Id { get; set; } // PK
public int SpecialId { get; set; }
[Column(TypeName = "Money")]
public decimal Rental { get; set; }
public virtual Vehicle Vehicle { get; set; }
}
而下面......
public class Vehicle
{
public Guid Id { get; set; } // PK
public int SpecialId { get; set; }
public string Manufacturer { get; set; }
public string Model { get; set; }
// List of rates on
public virtual ICollection<Rate> Rates { get; set; }
}
所以速度将有车辆和车辆可以有一个价目表。通常我只是使用PK和EF的地图很好。
但是在这种情况下,我需要使用SpecialId映射/连接它们。我从Rate Mapping类开始,但只能映射连接的一侧。我如何告诉它不要使用PK ID,而是双方使用SpecialId?
HasKey(x => x.Id);
Property(x => x.Id).IsRequired();
Property(x => x.SpecialId).IsRequired();
HasOptional(x => x.Vehicle).WithMany(x => x.Rates).Map(m => m.MapKey("SpecialId"));
有没有一种方法可以在速率和车辆表上使用SpecialId来加入两者。也许在该.Map()方法上的另一个重载?
在我看来,如果没有完全知道你的域名,那些id应该去。两者似乎都是PK级的属性。也许有一种方法可以在映射时转换为PK? –
@MikaelEliasson需要使用特殊ID将费率与车辆绑定在一起。 'Id'就是这样,每个记录都有一个唯一的ID,所以我可以在需要的时候将其单独删除并单独删除。我不明白我会如何输球?我正在EF中查找复合键,但我认为这不正确? – leen3o
但是车辆上的SpecialId是独一无二的还是两辆车有相同的SpecialId? –