首先从数据库中映射一对多代码

时间:2015-01-21 14:01:08

标签: c# entity-framework

我无法在salesheader和saleslines之间映射一对多的关系。我首先使用实体​​框架6.1从数据库中使用Code,并使用流畅的api。一个销售主管可以有多个销售线。

SalesHeader PK是文档类型,没有

SalesLine PK是凭证号,行号和凭证类型

SalesLine中的文档号是SalesHeader中的外键

 modelBuilder.Entity<SalesLine>()
            .HasRequired<SalesHeader>(s => s.SalesHeader)
            .WithMany(s => s.SalesLines)
            .HasForeignKey(s => new { s.Document_No_, s.Line_No_, s.Document_Type });

public partial class SalesHeader
{
    [Key]
    [Column("Document Type", Order = 0)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Document_Type { get; set; }

    [Key]
    [Column(Order = 1)]
    [StringLength(20)]
    public string No_ { get; set; }

    [Column("Sell-to Customer No_")]
    [Required]
    [StringLength(20)]
    public string Sell_to_Customer_No_ { get; set; }

    public virtual ICollection<SalesLine> SalesLines { get; set; }



}
public partial class SalesLine
{
    [Key]
    [Column("Document Type", Order = 0)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Document_Type { get; set; }

    [Key]
    [Column("Document No_", Order = 1)]
    [StringLength(20)]
    public string Document_No_ { get; set; }

    [Key]
    [Column("Line No_", Order = 2)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Line_No_ { get; set; }

    [Required]
    [StringLength(20)]
    public string No_ { get; set; }

    public virtual SalesHeader SalesHeader { get; set; }


}

1 个答案:

答案 0 :(得分:0)

要使用数据注释执行此操作,请在SalesLine类中包含此内容:

[Key, ForeignKey("SalesHeader")]
[Column("Document Type", Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Document_Type { get; set; }

[Key, ForeignKey("SalesHeader")]
[Column("Document No_", Order = 1)]
[StringLength(20)]
public string Document_No_ { get; set; }
相关问题