这适用于EF 6.所以我有这两个对象:User
可以有0或1 Mechanic
:
public class User
{
public int Id { get; set; }
public virtual Mechanic Mechanic { get; set; }
}
public class Mechanic
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
[Key, ForeignKey("User")]
public int UserId { get; set; }
[Required]
public virtual User User { get; set; }
}
当我在Id
对象中需要自己的Mechanic
时,这是我发现的唯一方法,但显然它不能作为主键,所以我只是把它作为一个自动增加的标识列。现在这是1到0或1关系的良好解决方法。
然而,存在缺陷。我需要另一个依赖于PricePackages
的对象Mechanic
,所以现在我的对象是:
public partial class Mechanic
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
[Key, ForeignKey("User")]
public int UserId { get; set; }
[Required]
public virtual User User { get; set; }
public virtual ICollection<PricePackage> PricePackages { get; set; }
}
public class PricePackage
{
public int Id { get; set; }
[ForeignKey("Mechanic")]
public int MechanicId { get; set; }
public virtual Mechanic Mechanic { get; set; }
}
这很好用,但是当我插入PricePackage
时,MechanicId
实际上是Mechanic.UserId
,而不是我想要的Mechanic.Id
。我该如何解决这个问题?