Проблема с первичным ключом ASP.NET

#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 и исправлен. Интересно, но решаемо =)