#asp.net #sql-server #visual-studio #linq-to-sql
#asp.net #sql-server #visual-studio #linq-to-sql
Вопрос:
Я разрабатываю карьерный веб-сайт для одного из моих проектов. Я использую Visual Studio 2010 и ASP.NET Веб-формы для кодирования.
Моя проблема в том, что у меня есть таблица с именем, Companies
которая состоит из столбцов Company ID, Company Name, Company Address
и Company Phone
. CompanyID
— это мой первичный ключ. Я пытаюсь вставить новые компании в эту таблицу, используя Linq-to-SQL.
Когда я выполняю следующий фрагмент кода, если база данных пуста, код работает правильно, но если это не так, он не может автоматически увеличивать CompanyID
и выдает ошибку базы данных.
Как я могу решить эту проблему?
Заранее спасибо.
protected void Button1_Click(object sender, EventArgs e)
{
Label_error.Text = "";
Page.Validate();
if (Page.IsValid)
{
CareerDataContext db = new CareerDataContext();
Company newCompany = new Company { coName = TextBox_coName.Text, coAddress = TextBox_coAddress.Text, coPhone = int.Parse(TextBox_coPhone.Text) };
Company fCompany = db.Companies.SingleOrDefault(company => company.coName.Equals(TextBox_coName.Text));
if (fCompany == null)
{
db.Companies.InsertOnSubmit(newCompany);
db.SubmitChanges();
}
else
Label_error.Text = "This username is already in use";
}
}
Комментарии:
1. КАКУЮ ошибку вы получаете (точно)?? И какой тип данных у вас
CompanyID
в вашей базе данных??2. И какое отношение ваша проблема имеет к ASP.NET ? Чем бы проблема отличалась, если бы вы использовали консольную программу?
Ответ №1:
Если ваш CompanyID является уникальным идентификатором, тогда вы можете передать Guid.NewGuid()
;
Например:
Company newCompany = new Company { coID = Guid.NewGuid(), coName = TextBox_coName.Text, coAddress = TextBox_coAddress.Text, coPhone = int.Parse(TextBox_coPhone.Text) };
Комментарии:
1. Я не понял вашу точку зрения. Как я должен использовать Guid. NewGuid(); ?
2. Решена. Я воссоздаю свой DBML и исправлен. Интересно, но решаемо =)