У меня есть две простые таблицы и большая проблема с внешними ключами:
- Sale (идентификация 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 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();
}
следующая процедура приводит к проблеме внешнего ключа - дочерние записи добавляются со значением 0 в столбце «SaleId» (FK).Родительская запись добавляется правильно, и первичный ключ SaleId получает автоматически сгенерированное значение.Что я могу сделать, чтобы поле SaleId автоматически устанавливалось в дочерних объектах на основе значения вновь вставленного родителя?