У меня странная проблема, и я пытаюсь выяснить, был ли это мой код или что-то напутало с базой данных.У меня есть таблица WebClienteLogin, которая имеет атрибут Id (первичный ключ, автоинкремент).Я вставляю новую запись, когда пользователь регистрируется на сайте.
Вчера утром значение Id последнего зарегистрированного пользователя достигло около 9000, а днем оно начало забавным образом прыгать, поэтому у следующего пользователя был Id 1200, 25000 ..... и он достиг 290000Однако сегодня оно продолжается как обычно (с увеличением на 1).Из статистики видно, что это происходит, когда одновременно регистрируется большое количество пользователей.
Используемые технологии: SQL Server 2008 R2, ASP.NET MVC2, .NET 3.5
Я использую шаблон репозитория с LINQ.Вот моя реализация одного из моих репозиториев.
public SQLWebClientLoginRepository(string connectionString)
{
dataContext = new DataContext(connectionString);
tabla = dataContext.GetTable<WebClientLogin>();
}
public bool Save(WebClientLogin user)
{
bool success = true;
try
{
if (user.Id == 0)
{
tabla.InsertOnSubmit(user);
}
else if (tabla.GetOriginalEntityState(user) == null)
{
tabla.Attach(user);
tabla.Context.Refresh(RefreshMode.KeepCurrentValues, user);
}
tabla.Context.SubmitChanges();
}
catch
{
......
}
return success;
}
Кроме того, у пользователя есть другой объект, прикрепленный к нему, поэтому он выполняет INSERT в две таблицы, а LINQ упаковывает его в транзакцию.
var user = new WebClientLogin();
// assigning other properties
user.WebClient = new WebClient { // setting propeties }
webClientLoginRepository.Save(user)
InЖурнал я получаю исключение:
Была предпринята попытка удалить связь между WebClientLogin и WebCLient. Однако один из внешних ключей отношения (WebClient.WebCLientLogin_id) не может быть установлен равным нулю. "исключение
Понятия не имею, почему он это делает! Кто-нибудь испытывал что-то подобное?