対処方法が本当にわからないという奇妙な動作が発生しています。エンティティが挿入された直後 (ExecuteDynamicInsert の直後) にエンティティを読み込もうとしていますが、部分メソッドが戻ると、常に System.Data.Linq.DuplicateKeyException "The database generated a key that is already in use. "。
非常に単純な例で達成しようとしているのは次のとおりです。
DataContext ファイル MyDataContext.cs:
public partial class MyDataContext
{
public override void SubmitChanges(System.Data.Linq.ConflictMode failureMode)
{
//using (TransactionScope ts = new TransactionScope())
//{
base.SubmitChanges(failureMode);
//}
}
partial void InsertCountry(Country instance)
{
this.ExecuteDynamicInsert(instance);
Country country = this.Countries.Where(c => c.CountryID == instance.CountryID).Single();
} //Exception occurs when this method returns...
}
プログラム ファイル Program.cs:
class Program
{
static void Main(string[] args)
{
using (MyDataContext dataContext = new MyDataContext())
{
Country c = new Country()
{
Code = "C",
CreatedBy = "Me",
CreatedDate = DateTime.Now,
ModifiedBy = "Me",
ModifiedDate = DateTime.Now
};
dataContext.Countries.InsertOnSubmit(c);
dataContext.SubmitChanges();
}
}
}
挿入後に国を読み取らなければ、コードは正常に機能しますが、何らかの理由で国を読み取る必要があり、ChangeSet を使用したくありません。
これを達成する方法、またはこの動作を回避する方法はありますか?
前もって感謝します。