实体框架非主键的外键

时间:2017-08-10 16:27:47

标签: c# sql .net entity-framework entity-framework-6

我正在使用Entity Framework 6,需要在Oracle数据库中将一个外键设置为另一个表。但是,另一个表中的键不是表的主键。以下是我模特的片段:

[Table("X_METER_USE")]
public partial class XMeterUse
{
    [Key]
    [StringLength(20)]
    [Column("PROJECT")]
    public string Project { get; set; }

    //... some more columns in here

    [StringLength(20)]
    [Column("ID_NUMBER")]
    public string IdNumber { get; set; }
}

[Table("STANDARD_REAGENT")]
public partial class StandardReagent
{
    [Key]
    [StringLength(80)]
    [Column("NAME")]
    public string Name { get; set; }

        //... some more columns here 

    [Column("SAMPLE_NUMBER")]
    public int? SampleNumber { get; set; }
}

因此,在这种情况下,IdNumber中的XMeterUseStandardReagent的外键,但它对应SampleNumber,而不是主键Name

这种情况下的关系是多对一的,因为StandardReagent可以有很多XMeterUses,但每个XMeterUse可以选择只有一个StandardReagent,由IdNumber--SampleNumber链接的两个表。

XMeterUse包含我需要在屏幕上显示的数据,其中我还需要StandardReagent中的两列。我已经研究过并找到了一些答案,虽然相似但它们并不是我在这里的情况。一位同事建议我使用流畅的API来实现这一点,但我仍然需要在正确的方向上推动如何设置它。我认为最好的解决方案是重新设计表格,使其不像这样链接,但我没有这个选项,数据库已经建立并被其他应用程序使用。建议?

提前致谢!

0 个答案:

没有答案