实体框架:使用自己的ID配置一个为零或一个

时间:2017-04-17 06:43:07

标签: c# asp.net-mvc entity-framework entity-framework-6 entity-relationship

这适用于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。我该如何解决这个问题?

0 个答案:

没有答案