Не удается вставить значение NULL в столбец " ID "таблицы" dbo.centertechnical"; столбец не допускает значений null. Вставить не удается.\r \ n заявление было прекращено.
я хочу сохранить значение в базе данных sql server, но у меня есть эта ошибка , но я не использую identity
я хочу сохранить значение, которое я пишу в текстовом поле.
это класс модели CenterLocation:-
public partial class CenterTechnical { public int ID { get; set; } public string LocationCenterID { get; set; } public string TechName { get; set; } public string TechMobile { get; set; } public string TechPhone { get; set; } public string TechAddress { get; set; } public virtual LocationCenter LocationCenter { get; set; } }
и это создание метода в контроллере:-
[HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "ID, LocationCenterID, TechName, TechMobile, TechPhone, TechAddress")]CenterTechnical centerTechnical) { if(ModelState.IsValid) { var newTechnical = new CenterTechnical() { ID = centerTechnical.ID, LocationCenterID = centerTechnical.LocationCenterID, TechName = centerTechnical.TechName, TechMobile = centerTechnical.TechMobile, TechPhone = centerTechnical.TechPhone, TechAddress = centerTechnical.TechAddress }; db.CenterTechnical.Add(newTechnical); db.SaveChanges(); return RedirectToAction("Index"); } else { return View(centerTechnical); } }
Смотреть :-
@using (Html.BeginForm("Create", "CenterTechnical", FormMethod.Post, new { enctype = "form-data" })) { @Html.AntiForgeryToken() <div class="row"> <div class="col-md-12"> <div class="box box-DG"> <div class="box-header with-border"> <span style="color:#2D69B7"></span> <h3 class="box-title">@WhiteWhaleLanguage.Technical</h3> </div> <div class="box-body"> <div class="row"> <div class="col-md-12"> <div class="form-horizontal"> <div class="form-group"> @Html.LabelFor(model => model.ID, @WhiteWhaleLanguage.TechnicalID, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-6"> <div class=""> @Html.TextBoxFor(model => model.ID, new { @class = "form-control" }) </div> </div> </div> <div class="form-group"> @Html.LabelFor(model => model.LocationCenterID, @WhiteWhaleLanguage.CenterCode, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-6"> <div class=""> @Html.TextBoxFor(model => model.LocationCenterID, new { @class = "form-control" }) </div> </div> </div> <div class="form-group"> @Html.LabelFor(model => model.TechName, @WhiteWhaleLanguage.TechName, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-6"> <div class=""> @Html.TextBoxFor(model => model.TechName, new { @class = "form-control" }) </div> </div> </div> <div class="form-group"> @Html.LabelFor(model => model.TechMobile, @WhiteWhaleLanguage.TechMobile, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-6"> <div class=""> @Html.TextBoxFor(model => model.TechMobile, new { @class = "form-control" }) </div> </div> </div> <div class="form-group"> @Html.LabelFor(model => model.TechPhone, @WhiteWhaleLanguage.TechPhone, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-6"> <div class=""> @Html.TextBoxFor(model => model.TechPhone, new { @class = "form-control" }) </div> </div> </div> <div class="form-group"> @Html.LabelFor(model => model.TechAddress, @WhiteWhaleLanguage.TechAddress, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> <div class=""> @Html.TextAreaFor(model => model.TechAddress, new { @class = "form-control", @rows = "5" }) </div> </div> </div> <br /> <div class="modal-footer with-border"> <input type="submit" name="" value=@WhiteWhaleLanguage.SaveNewTechnical , class="btn btn-primary col-md-2" /> @Html.ActionLink(WhiteWhaleLanguage.BackToList, "Index", null, new { @class = "btn btn-default" }) </div> </div> </div> </div> </div> </div> </div> </div> }
Что я уже пробовал:
я хочу добавить значение в текстовое поле и сохранить значения, и я не использую identity
[no name]
Сообщение об ошибке не требует пояснений. Так в чем же ваш вопрос?
MahmoudOmar
Почему, когда я пишу число, подобное 2, в textboxFor ID, оно дает мне эту ошибку?
[no name]
Вы узнаете это, научившись отлаживать свой код. Очевидно, что все, что вы вводите, не делает этого, и вы получаете нулевое значение.
Bryian Tan
Вы подтвердили центротехнику.ID не является нулевым?
MahmoudOmar
это первичный ключ, но я не делаю его идентификацией, но когда я использовал строку запроса, она работала. почему - не знаю !!!
это код Edite:-
[AuthorizeRole (nameof(CenterTechnical), nameof(Create))]
[HttpPost]
[ValidateAntiForgeryToken]
общественная ActionResult создать(/*[Персонализация(включая = "идентификатор, LocationCenterID, TechName, Techmobileбыл, TechPhone, TechAddress")]*/CenterTechnical centerTechnical)
{
if (ModelState.Функция IsValid)
{
string constr = ConfigurationManager.ConnectionStrings ["WhiteWhaleModel"].Параметр connectionString;
using (SqlConnection con = new SqlConnection(constr))
{
string query = " INSERT INTO CenterTechnical(ID, LocationCenterID,TechName,TechMobile,TechPhone,TechAddress) ";
query = query + " значения (@ID, @LocationCenterID, @TechName, @TechMobile, @TechPhone, @TechAddress) ";
используя (sqlcommand, который команду cmd = новый sqlcommand, который(запрос))
{
УМК.Подключение = кон;
против.Открыть();
УМК.Параметры.AddWithValue ("@ID", centerTechnical.ID);
УМК.Параметры.AddWithValue ("@LocationCenterID", centerTechnical.LocationCenterID);
УМК.Параметры.AddWithValue ("@TechName", centerTechnical.TechName);
УМК.Параметры.AddWithValue ("@TechMobile", centerTechnical.Techmobileбыл);
УМК.Параметры.AddWithValue ("@TechPhone", centerTechnical.TechPhone);
УМК.Параметры.AddWithValue ("@TechAddress", centerTechnical.TechAddress);
УМК.Метод executenonquery();
против.Закрывать();
}
}
//var newTechnical = новый Центртехникал()
//{
// Идентификатор = centerTechnical.Идентификатор,
// LocationCenterID = centerTechnical.LocationCenterID,
// TechName = centerTechnical.TechName,
// TechMobile = centerTechnical.Techmobileбыл,
// TechPhone = centerTechnical.TechPhone,
// TechAddress = centerTechnical.TechAddress
//};
//дБ.CenterTechnical.Добавить (newTechnical);
//дБ.Метод SaveChanges();
return RedirectToAction ("индекс");
}
ещё
{
обратный вид(centerTechnical);
}
}
Bryian Tan
Ваш исходный код выглядит прекрасно. Это должно сработать, вот что я рекомендую вам проверить. На диаграмме EDMX найдите Центральную техническую модель. Нажмите на свойство ID, щелкните правой кнопкой мыши и выберите пункт Свойства, убедитесь, что StoreGeneratedPattern = Нет