繁体   English   中英

无法确定外键的复合外键顺序

[英]Unable to determine a composite foreign key ordering for foreign key

我在建立两个模型之间的关系时遇到问题。 表中有3个复合键。 当我尝试将Category.Code链接到Service.CategoryCode时,会出现问题。 如果我在两个表中使用相同的列名,则EF能够处理。 但是我不想使用Category.CategoryCode。 我是英孚的新手。 请帮助我说明如何通过注释和/或流利的api实现此目的。

public class Category
{
    public Category()
    {
        this.Services= new HashSet<Service>();
    }
    [Key, Column(Order = 0)]
    public string ApplicationCode { get; set; }
    [Key, Column(Order = 1)]
    public string CompanyCode { get; set; }
    [Key, Column(Order = 2)]
    public string Code { get; set; }
    public string Description { get; set; }

    public virtual ICollection<Service> Services { get; set; }
}

public class Service
{
    [Key, Column(Order = 0)]
    [ForeignKey("Category")]
    public string ApplicationCode { get; set; }
    [Key, Column(Order = 1)]
    [ForeignKey("Category")]
    public string CompanyCode { get; set; }
    [Key, Column(Order = 2)]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }
    [ForeignKey("Category")]
    public string CategoryCode { get; set; }
    public string Description { get; set; }
    public string Remarks { get; set; }

    public virtual Category Category { get; set; }
}

哦,我认为现在回答您的问题为时已晚。 我在很多关系中都使用“顺序”。 例如:

public class Subscript
{
    [Key, Column(Order = 0)]
    public long ID { get; set; }

    [ForeignKey("Customer")]
    public int CustomerId { get; set; }

    public string ChatType { get; set; }

    [ForeignKey("Channel")]
    public int? ChannelId { get; set; }
    public virtual Channel Channel { get; set; }

    [ForeignKey("Watermark") ,Column(Order = 1)]
    public int? Watermark_Id { get; set; }

    [ForeignKey("Watermark"), Column(Order = 2)]
    public string Watermark_Title { get; set; }

    public virtual Watermark Watermark { get; set; }

}

public class Watermark
{
    [Key, Column(Order = 0), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Key, Column(Order = 1, TypeName = "NVARCHAR")]
    [StringLength(100)]
    public string Title { get; set; }
}

暂无
暂无

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

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