Я испытываю странное поведение, которое я действительно не знаю, как обойти это. Я пытаюсь прочитать сущность сразу после того, как она была вставлена (сразу после ExecuteDynamicInsert) и когда возвращается частичный метод, я всегда получаю System.Data.Linq.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();
}
}
}
Если я не читаю страну после того, как она была вставлена, код работает нормально, но мне нужно прочитать ее по любой причине, и я не хочу использовать набор изменений.
Есть ли способ достичь этого или обойти это поведение?
Заранее спасибо.