gpt4 book ai didi

linq to sql 与外键的关联问题

转载 作者:行者123 更新时间:2023-12-01 06:40:38 24 4
gpt4 key购买 nike

我有两个简单的表和外键的一个大问题:

  • 销售(SaleID int PK 身份)
  • SaleDetail (SaleDetailId int PK
    身份,SaleID int FK)

  • 这是一个非常基本的一对多父子关系。当然还有一些其他字段,但它们不相关,因为它们没有在关系中使用,所以我没有将它们包括在列表中。

    我将表映射到代码中的类:
    [Table()]
    public class Sale
    {
    [Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)]
    public int SaleId
    {
    get;
    set;
    }

    private EntitySet<SaleDetail> saleDetails = new EntitySet<SaleDetail>();
    [Association(OtherKey = "SaleId", Storage = "saleDetails")]
    public EntitySet<SaleDetail> SaleDetails
    {
    get
    {
    return this.saleDetails;
    }
    set
    {
    this.saleDetails.Assign(value);
    }
    }

    另一个:
    [Table()]
    public class SaleDetail
    {
    [Column(IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
    public int SaleDetailId
    {
    get;
    set;
    }

    [Column()]
    public int SaleId
    {
    get;
    set;
    }

    然后我尝试创建一个新的 Sale 并添加几个子对象。
    Sale s = new Sale();
    s.SaleDetails.Add(new SaleDetail());
    s.SaleDetails.Add(new SaleDetail());

    在最后一步中,我尝试添加新对象:
    using (DataContext dc = new DataContext(Database.ConnectionString))
    {
    var sales = dc.GetTable<Sale>();

    sales.InsertOnSubmit(s);
    dc.SubmitChanges();
    }

    以下过程会导致外键问题 - 在“SaleId”(FK) 列中添加值为 0 的子记录。父记录已正确添加,并且 SaleId 主键获取其自动生成的值。如何根据新插入的父对象的值在子对象中自动设置 SaleId 字段?

    最佳答案

    在这里,我们倾向于首先提交父级,尽管通过嵌套事务,您可能能够获得自动主键并仍然保持故障回滚行为。

    关于linq to sql 与外键的关联问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6170838/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com