繁体   English   中英

EF6代码优先不映射我的M-0关系

[英]EF6 Code First not mapping my M-0 relationsip

我希望能够键入SupplyPoint.SupplyPointMeters并将后者作为一个集合。 Code First已创建表并正确设置了外键,但我希望能够以这种方式访问SupplyPoint.SupplyPointMeters

因此,在摘要中, SupplyPointMeter始终具有一个SupplyPoint但是SupplyPoint可以具有0或多个SupplyPoint仪表。 一切正常,但我希望关系自动加入以支持点表示法。

public partial class SupplyPointMeter
{
    [Key]
    public int SupplyPointMeterId { get; set; }
    public int SupplyPointId { get; set; }

    [Key,ForeignKey("SupplyPointId")]
    public virtual SupplyPoint SupplyPoint { get; set; }
}

public partial class SupplyPoint
{
    [Key]
    public int SupplyPointId { get; set; }

    public virtual ICollection<SupplyPointMeter> SupplyPointMeters { get; set; }
}

尝试这种方式。

public class SupplyPointMeter
{
    public int Id { get; set; }
    public virtual SupplyPoint SupplyPoint { get; set; }
}

public class SupplyPoint
{
    public int Id { get; set; }
    public virtual ICollection<SupplyPointMeter> SupplyPointMeters { get; set; }
}

我建议您使用流利的映射

modelBuilder.Entity<SupplyPoint>()
    .HasMany(sp => sp.SupplyPointMeters)
    .WithRequired(spm => spm.SupplyPoint)
    .HasForeignKey(spm => spm.SupplyPointId);

另外,您也不需要标记键-如果键属性与type_name + id模式匹配,则按惯例将其视为键:

public partial class SupplyPointMeter
{        
    public int SupplyPointMeterId { get; set; }
    public int SupplyPointId { get; set; }
    public virtual SupplyPoint SupplyPoint { get; set; }
}

public partial class SupplyPoint
{
    public int SupplyPointId { get; set; }
    public virtual ICollection<SupplyPointMeter> SupplyPointMeters { get; set; }
}

这将产生以下表格

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM