Ответ 1
Добавить IsDbGenerated = true Свойство ClientNo
[Column(Storage="_ClientNo", DbType="Int NOT NULL", **IsDbGenerated=true,** IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
public int ClientNo
Я получаю это исключение, когда я пытаюсь отправить данные через форму в эту базу данных: -
Exception
Невозможно вставить явное значение для столбца идентификатора в таблице "ClientDetails", если для параметра IDENTITY_INSERT установлено значение OFF.
Однако форма не имеет поля, поэтому данные могут вводить столбец идентификаторов (PK), поэтому я не понимаю, почему это происходит.
В настоящий момент я использую стандартную кнопку asp.net mvc submit, но в конечном итоге я свяжу ее с кнопкой диалога jquery
Столбец ClientNo, который является указанным столбцом, имеет в виду исключение, имеет следующие атрибуты
Клиент не имеет данных 900 и т.д.
Это исключение также генерируется, когда в форме клиента нет данных, введенных в форму
Его бросили на метод DataCOntext.SubmitChanges()
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create1(ClientDetail client)
{
if(ModelState.IsValid)
{
client = new ClientDetail();
UpdateModel(client);
//Debug Code
System.Diagnostics.Debug.WriteLine("AddNewClient Create1");
repo.AddNewClient(client);
//Debug Code
System.Diagnostics.Debug.WriteLine("Save Create1");
// System.Data.SqlClient.SqlException thrown at this line
repo.Save();
//Debug Code - never reached
System.Diagnostics.Debug.WriteLine("Saved Changes");
// return RedirectToAction("Details", new { id = client.ClientNo });
}
return View(client);
}
public void AddNewClient(ClientDetail client)
{
System.Diagnostics.Debug.WriteLine("Start Insert On Submit");
db.ClientDetails.InsertOnSubmit(client);
System.Diagnostics.Debug.WriteLine("Finish Insert On Submit");
}
public void Save()
{
System.Diagnostics.Debug.WriteLine("In Save Method");
db.GetChangeSet();
System.Diagnostics.Debug.WriteLine("Got ChangeSet");
db.SubmitChanges();
System.Diagnostics.Debug.WriteLine("Exit Save Method");
}
Is this the query everyone is talking about
[Column(Storage="_ClientNo", DbType="Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
public int ClientNo
{
get
{
return this._ClientNo;
}
set
{
if ((this._ClientNo != value))
{
this.OnClientNoChanging(value);
this.SendPropertyChanging();
this._ClientNo = value;
this.SendPropertyChanged("ClientNo");
this.OnClientNoChanged();
}
}
}
Кто-нибудь знает решение или причину, почему это происходит?
Спасибо
Добавить IsDbGenerated = true Свойство ClientNo
[Column(Storage="_ClientNo", DbType="Int NOT NULL", **IsDbGenerated=true,** IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
public int ClientNo
Вы не можете вводить значения, которые нужно вставить в столбец Identity как часть вставки. Они автоматически генерируются как атомная часть операции INSERT
. Это может быть временно отключено для каждой таблицы с помощью команды SET IDENTITY_INSERT
.
Либо вы должны изменить базу данных shcema, но я не рекомендую это или лучше, вы не должны указывать значение или поставлять значение NULL
для столбца Client_NO
в вашей вставке.
В SQL вы можете использовать функцию SCOPE_IDENTITY()
для получения значения auto genrated. модель будет автоматически обновляться с этим значением.
Используйте archil ответ, чтобы сообщить, что модель не передает этот столбец в сгенерированном элементе.
[Column(Storage="_ClientNo",
DbType="Int NOT NULL",
IsDbGenerated=true,
IsPrimaryKey=true,
UpdateCheck=UpdateCheck.Never)]
public int ClientNo
Обратите внимание на версию IsDBGenerated на атрибуты.