Я испытываю странное поведение, которое я действительно не знаю, как его обойти. Я пытаюсь прочитать объект сразу после его вставки (сразу после ExecuteDynamicInsert), и когда возвращается неполный метод, я всегда получаю System.Data.Linq.DuplicateKeyException «База данных сгенерировала ключ, который уже используется. ».LINQ to SQL: Чтение объекта при вызове «SubmitChanges» вызывает DuplicateKeyException
Вот что я пытаюсь достичь с помощью очень простого примера:
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.
Есть ли способ достичь этого или обойти это поведение?
Заранее спасибо.
Это не сработало. –