01/10/2018, 08:57
Lỗi db.savechangs() trong asp.net MVC C#
Mình tạo 1 action thêm mới tài khoản, có liên kết lấy id ở các bảng phụ, nhưng khi lưu lại thì báo lỗi, mọi người chỉ giúp mình giải pháp sửa lỗi với, mình mới học nên chưa rành lắm.
Khi nhấn nút để Submit sữ liễu vào thì bị báo lỗi chỗ db.SaveChangs()
Trong Controller:
sing System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Model;
namespace test.Controllers
{
public class CreateController : Controller
{
//
// GET: /Create/
public ActionResult Index()
{
return View();
}
//
// GET: /Create/Details/5
Db db = new Db();
public ActionResult CreateMember()
{
User obj = new User();
obj.SelectListBdh = new SelectList(db.Bdhs.ToList(), "BdhId", "BdhFullname");
obj.SeclectListFg = new SelectList(db.Fgs.ToList(), "FgId", "FgName");
obj.SelectListLevel = new SelectList(db.Levels.ToList(), "LevelId", "LevelName");
return View(obj);
}
[HttpPost]
public ActionResult CreateMember(User obj)
{
db.Users.Add(obj);
db.SaveChanges();
return View(obj);
}
}
}
Trong View:
@model Model.User
@{
ViewBag.Title = "CreateMember";
}
<a href="~/Views/Login/Index.cshtml">~/Views/Login/Index.cshtml</a>
<a href="~/Views/Create/CreateMember.cshtml">~/Views/Create/CreateMember.cshtml</a>
<h2>CreateMember</h2>
@using (Html.BeginForm("CreateMember", "Create", FormMethod.Post, new { @class = "form" }))
{ <div>
<p>
<label>Nhập email học viên:</label>
@Html.TextBoxFor(m => m.UserId)
</p>
<p>
<label>Nhập họ và tên đệp học viên</label>
@Html.TextBoxFor(m => m.UserLastName)
</p>
<p>
<label>Nhập tên học viên </label>
@Html.TextBoxFor(m => m.UserFirstName)
</p>
<p>
<label>Nhập điện thoại học viên </label>
@Html.TextBoxFor(m => m.UserPhone)
</p>
<p>
<label>Nhập ngày sinh </label>
<input type="date" name="UserBirth" />
</p>
<p>
<label>Chọn Ban Điều hành đã tư vấn </label>
@if (Model.SelectListBdh != null)
{
@Html.DropDownListFor(m => m.UserAddId, Model.SelectListBdh)
}
else
{
<h3>Ban level cho hoc vien</h3>
}
@if (Model.SelectListLevel!= null)
{
@Html.DropDownListFor(m => m.LevelNownId, Model.SelectListLevel)
}
else
{
<h3>Chưa có bảng level</h3>
}
<h3>Ban lớp bắt đầu cho học viên</h3>
}
@if (Model.SeclectListFg != null)
{
@Html.DropDownListFor(m => m.StarMark, Model.SeclectListFg)
}
else
{
<h3>Chưa có bảng lớp</h3>
}
</p>
<p>
<input type="submit" class="btn-default" value="Hoàn thành" />
</p>
</div>
Và Database sql:
Create table Level --Danh sách Ban điều hành hỗ trợ
(
LevelId int identity primary key,
LevelName nvarchar(128),
StarMin int DEFAULT 0,
)
Insert into Level(LevelName,StarMin)
VALUES (N'NHẬP MÔN', 0),(N'XE BÍCH', 16), (N'XE CHUỒN', 32)
create table Bdh
(
BdhId int identity primary key,
BdhName nvarchar(128),
BdhLastName nvarchar(128),
BdhFullname nvarchar(256),
HeadId int DEFAULT 1,
)
insert into Bdh ( BdhLastName, BdhName, BdhFullname, HeadId)
values (N'Chưa cập nhật', N'Chưa cập nhật', N'Chưa cập nhật', 1)
,
( N'Nguyễn Lê Thăng', N'Long', N'Nguyễn Lê Thăng Long', 5)
Create table Coach
(
CoachId int identity primary key,
CoachName nvarchar(128),
CoachLastName nvarchar(128),
CoachFullname nvarchar(256),
HeadId int DEFAULT 1,
)
insert into Coach( CoachLastName, CoachName, CoachFullname, HeadId)
values (N'Chưa cập nhật', N'Chưa cập nhật', N'Chưa cập nhật', 1),
( N'Nguyễn Lê Thăng', N'Long', N'Nguyễn Lê Thăng Long', 5)
Create table Train
(
TrainId int identity primary key,
TrainName nvarchar(128),
TrainLastName nvarchar(128),
TrainFullname nvarchar(256),
HeadId int DEFAULT 1,
)
insert into Train (TrainLastName, TrainName, TrainFullname, HeadId)
values (N'Chưa cập nhật', N'Chưa cập nhật', N'Chưa cập nhật', 1)
, ( N'Nguyễn Lê Thăng', N'Long', N'Nguyễn Lê Thăng Long', 5)
Create table Users
(
UserId varchar(50) primary key,
UserName nvarchar(128), --Tên đang nhập
UserUserName nvarchar(128) , --Ten hiển thị dụng
UserFullname nvarchar(256),
UserPass nvarchar(128) ,
UserEmail varchar(128) ,
UserImage nvarchar(320),
UserCreateUserId int DEFAULT 1, --nguowi taoj ra thong tin ban dau (ke toans,..)
UserCreateDate datetime DEFAULT getdate(),
UserFirstName nvarchar(120),
UserLastName nvarchar(64),
UserPhone nvarchar(20),
UserBirth datetime DEFAULT getdate(),
HappBirth bit DEFAULT 0,
UserAddId int DEFAULT 1, --Id nguoi tu van ban dau (bdh)
LevelNownId int DEFAULT 1,
StarMark int DEFAULT 0,
FgBeginId int DEFAULT 1,
FgNownId int DEFAULT 1,
FgEndId int DEFAULT 1 , -- Fg cao nhất mà lần đóng trước đã đóng
FgFutureId int DEFAULT 1 -- Fg cao nhất mà lần đang đóng sẽ đóng (nếu người đóng lần đầu tiên thì FgFutureId = FgEndId)
)
go
insert into Users(UserId, UserName, UserPass, UserCreateUserId, UserFirstName, UserLastName, UserPhone,
UserAddId)
values ('NooneNoone@gmail.com', N'Vô danh', N'123456', 1, N'Vô danh',N'Vô danh','00000000000',1)
insert into Users (UserId,UserLastName, UserFirstName, UserFullname)
values ('thanglong.bigedu@gmail.com', N'Nguyễn Lê Thăng', N'Long', N'Nguyễn Lê Thăng Long'),
('kietnguyen.bigedu@gmail.com', N'Nguyễn Văn', N'Kiệt', N'Nguyễn Văn Kiệt')
Create table Fg
(
FgId int identity primary key,
FgName nvarchar(128),
FgGroupId int DEFAULT 1 ,
FgProgrameId int DEFAULT 1,
FgDiscr nvarchar(max)
)
go
insert into Fg(FgName)
values(N'Chưa học'),('Fg1'), ('Fg2'), ('Fg3'), ('Fg4'), ('Fg5'), ('Fg6'), ('Fg7'), ('Fg8'), ('Fg9')
go
Use [ACTFGV2]
go
set ansi_nulls on
go
set quoted_identifier on
go
create procedure [dbo].[AccountLogin]
@UserName nvarchar(20),
@Password nvarchar(50)
as
begin
declare @count int
declare @res bit
select @count =count(*) from Users where UserId=@UserName and UserPass=@Password
if @count >0
set @res =1
else
set @res=0
select @res
end
Bài liên quan
Click View Detail để xem chi tiết, thường thì nó báo lỗi cụ thể hơn, bạn xem xong là biết chỗ sửa. Nếu không thì post phần chi tiết lên đây cho mọi người giúp.
Cảm ơn bác, bác xem thử giúp mình nhé:
Lỗi này là do một số field User không hợp lệ nên không thể insert vào DB.
Ví dụ:
Một số field trong DB yêu cầu NOT NULL mà bạn truyền vào giá trị null
Giá trị khóa ngoại không hợp lệ
Để sửa thì bạn xem lại các field của object cần insert hợp lệ chưa
Em nhập tay thử trong database xem có vấn đề gì không. Số file cần thêm vào dữ liệu trên form đủ các yêu cầu bắt buộc không.
Minh đã nhập thử bằng tay và bằng thủ tục trên SQL thấy bình thường ạ:
Nhớ các file em nhập nhé giờ thay vì add vào dữ liệu thì em cho cái action của mình view ra một thẻ html.
Rồi chắc chắn em biết chỗ sai liền.
Nếu không xong nữa em gửi full class add lỗi đó lên đây anh mần thịt nó tiếp em. Giờ phải ngủ rồi.
Dạ, em cảm ơn anh ạ, nhưng trên này em new mem nên không gửi được file đính kèm ạ. Em nén nó lại gồm project em đang làm, code đưa lên google drive em sent lên, bác coi giúp em nhé: https://drive.google.com/file/d/0BxxcpKC4hw8HT3BpbVZBOVFTSjg/view?usp=sharing
Có bác nào ở HCM chuyên trị ASP.Net MVC C# nhận kèm cấp tốc có phí giúp em vài ngày được không ạ. Xin trân đội ơn các anh chị em :’(
Entity Framework - "An error occurred while updating the entries. See the inner exception for details"
tham khảo thêm link ở trên em.
báo lỗi trên kìa…
@Duc_Minh_Pham1
sorry bác @Tran_Dang. reply nhầm
Cảm ơn các bác, mình mò lại đêm qua tới giờ chưa xong, mình đang ngồi code tay lại xem sao. Chúc cả nhà ngày mới tràn đầy năng lượng nhé
Vãi thật.
Đã bảo là do một số field của object cần insert không hợp lệ.
Giờ phải test từng field để xem giá trị field nào là không hợp lệ.
P/S: Lỗi này mình gặp hoài à
Mình không nghĩ là mình giỏi nhưng ít nhất mình đã đi làm được vài năm (làm về .NET MVC). Nếu bạn có câu hỏi gì thì có thể mail cho mình (haovtit@gmail.com), ban ngày mình đi làm, ban đêm mình sẽ giúp
Code lại? Sao phải làm vậy. Kiểm tra lại trong code có chỗ nào xài sai tên cột không, nó thông báo lỗi vậy mà: Message=Invalid column name ‘Bdh_BdhId’.
Code lại có khi lại đụng lỗi này tiếp thì khóc bằng tiếng Thái
Dạ, em cảm ơn bác. Em coppy cái code sql sang bên Exel lọc, cộng chuỗi lại thành hàm rồi copy - paste qua class nên cũng nhanh ạ. Mong được bác và các anh chị em chỉ dạy thêm ạ.