是否可以创建一个具有多个FK列的域类到相同的PK?

时间:2018-03-22 21:20:46

标签: sql entity-framework database-design

我是设计数据库的新手。

我有问题如何定义一个域类,该域类具有多个与同一主键链接的外键。

这是我的模特:

namespace OceanFmsSystem.Domain
{
    public class ExportTemplate
    {
        public int Id { get; set; }
        public List<ExportBooking> ExportBookings { get; set; }
        public string TemplateName { get; set; }
        public int CustomerId { get; set; }
        public string Incoterms { get; set; } 
        public string IncotermsDetail { get; set; }
        public string PaymentTerm{ get; set; }
        public int CountryOriginId { get; set; }
        public int CountryDestinationId { get; set; }
    }
}

我想做的是CountryOriginId&amp; CountryDestinationId应将以下类称为外键:

namespace OceanFmsSystem.Domain
{
    public class Country
    {
        public int Id { get; set; }
        public string CountryCode { get; set; }
        public string CountryName { get; set; }
    }
}

据我所知,在EF Core中有一个约定,我应该将外键命名如下,以便从代码迁移到数据库。

public type ClassNameOfPrimaryKeyId { get; set;}

有没有办法让这种情况发生?

1 个答案:

答案 0 :(得分:0)

是的,可能。你的课应该是这样的:

public class ExportTemplate
{
    //...

    public int CountryOriginId { get; set; }
    public Country CountryOrigin { get; set; }

    public int CountryDestinationId { get; set; }
    public Country CountryDestination { get; set; }
}

EF非常聪明,可以按惯例计算ID。如果您不希望遵循约定,可以使用属性上的[ForeignKey]属性来配置FK:

[ForeignKey("Origin")]
public int MyOriginId { get; set; }
public Country Origin { get; set; }