1
「トレーニング」に「User」テーブルの参照整合性を持つ「CreatedBy」という列があります。したがって、「CreatedBy」は実際にはトレーニングレコードを挿入したユーザーを表す「ユーザー」です。エンティティフレームワーク追加エンティティで子エンティティも追加されます
新しい「トレーニング」エンティティを追加すると、「CreatedBy」は古い「ユーザー」です。だから、ユーザーを追加しようとするべきではありません。しかし、ユニークなキー制約に違反しているので、失敗します。
ここにコードがあります。どこが間違っていますか?
public int AddEntity(Training entity, bool isSaveInstantly)
{
this.trainersDeskDBModel.Trainings.AddObject(entity);
if (isSaveInstantly)
{
this.trainersDeskDBModel.SaveChanges();
}
return entity.Id;
}
public int UpdateEntity(Training entity, bool isSaveInstantly)
{
this.trainersDeskDBModel.Trainings.ApplyCurrentValues(entity);
if (isSaveInstantly)
{
this.trainersDeskDBModel.SaveChanges();
}
return entity.Id;
}
public int Save(Training entity, bool isSavedInstantly)
{
IEnumerable<Training> training = this.trainersDeskDBModel.Trainings.Where(x => x.Id == entity.Id);
if (training != null && training.Count() > 0)
{
this.UpdateEntity(entity, isSavedInstantly);
}
else
{
this.AddEntity(entity, isSavedInstantly);
}
return entity.Id;
}