新创建的EF Code第一个表的SQL Server外键窗口问题

问题描述 投票:-2回答:1

我不知道是否有人面对这个问题,或者只是其他问题。

我使用的是EF代码优先架构。

这是我的第一堂课:

public class PerformanceSurchargeGeneralSettings : FullAuditedEntity
{
    public int PerformanceID { get; set; }
    public Performance Performance { get; set; }

    public int SurchargeId { get; set; }
    public Surcharges Surcharge { get; set; }
}

这是第二堂课:

public class Surcharges : FullAuditedEntity
{
    public  string Name { get; set; }

    public ICollection<PerformanceSurchargeGeneralSettings> PerformanceSurchargeGeneralSettings{ get; set; }
}

一切正常,我可以添加迁移,更新我的数据库,但如果我去表并检查外键引用,我看不到主键表。在此处查看此截图:

enter image description here

我无法在主键表的下拉列表中找到新添加的Surcharge表。

如果我为此表执行SP_help,我可以找到所有外键,请参见屏幕截图:

enter image description here

我不明白问题究竟在哪里......

c# sql-server entity-framework aspnetboilerplate
1个回答
1
投票

H,

更改您的课程如下;

[Table("PerformanceSurchargeGeneralSettings")]
public class PerformanceSurchargeGeneralSetting : FullAuditedEntity
{
    [ForeignKey("PerformanceId")]
    public virtual Performance Performance { get; set; }
    public int PerformanceId { get; set; }

    [ForeignKey("SurchargeId")]
    public virtual Surcharge Surcharge { get; set; }
    public int SurchargeId { get; set; }    
}

[Table("Surcharges")]
public class Surcharge : FullAuditedEntity
{
    [MaxLength(128)]
    public string Name { get; set; }

    public virtual ICollection<PerformanceSurchargeGeneralSetting> PerformanceSurchargeGeneralSettings{ get; set; }
}

我的建议

  • 对类使用单数名称。附加费=>附加费。
  • 将MaxLength赋予字符串属性。
  • 对所有Id字段使用相同的大小写。 PerformanceID => PerformanceId。 (就像你为SurchageId所做的那样)。
  • 如果要使用延迟加载加载数据,请添加虚拟键。
© www.soinside.com 2019 - 2024. All rights reserved.