【发布时间】:2017-09-14 12:33:33
【问题描述】:
我是 .NET 的新手。我正在创建一个网上商店,但我遇到了问题
我的错误:
System.Data.Entity.Infrastructure.DbUpdateException: '更新条目时出错。有关详细信息,请参阅内部异常。'
UpdateException:更新条目时出错。见 详细信息的内部异常。
SqlException:无法将值 NULL 插入列“GadgetId”, 表'GadgetStorege.dbo.Gadgets';列不允许空值。插入 失败。声明已终止。
我在解决方案中使用 3 个项目我在 c# 类库域中有一个接口 IGadgetRepository 并在控制器中使用 asp.net mvc
public interface IGadgetRepository
{
IEnumerable<Gadget> Gadgets { get; }
void AddGadget(Gadget gadget);
void SaveGadget(Gadget gadget);
void DeleteGadget(Gadget gadget);
}
我的模特:
public class Gadget
{
[HiddenInput(DisplayValue = false)]
[Display(Name = "ID")]
public int GadgetId { get; set; }
[Display(Name = "Name")]
public string Name { get; set; }
[Display(Name = "Type")]
public string Type { get; set; }
}
我想将对象添加到数据库:
public class EFGadgetRepository : IGadgetRepository
{
EFDbContext context = new EFDbContext();
public IEnumerable<Gadget> Gadgets
{
get { return context.Gadgets; }
}
public void AddGadget(Gadget gadget)
{
context.Gadgets.Add(gadget);
context.SaveChanges();
int id = gadget.GadgetId;
}
public void DeleteGadget(Gadget gadget)
{
Gadget dbEntry = context.Gadgets.Find(gadget.GadgetId);
context.Gadgets.Remove(dbEntry);
context.SaveChanges();
}
}
我在控制器中的方法:
[HttpPost]
public ActionResult Create(string name, string type)
{
Gadget gadget = new Gadget();
if (ModelState.IsValid)
{
gadget.Name = name;
gadget.Type = type;
repository.AddGadget(gadget);
TempData["message"] = string.Format("Gadget add \"{0}\" gadget", gadget.Name);
return RedirectToAction("Index");
}
else
{
return View(gadget);
}
}
我的照片错误: enter image description here
我想向数据库添加对象和删除对象。 我在我的项目中使用实体框架。 我该如何解决这个问题?
【问题讨论】:
-
你用的是什么版本的EF?
-
为您的 ID 添加 [Key] 属性
-
@mjwills EF 6.1.3 版本
标签: c# mysql .net asp.net-mvc entity-framework