.NET将对象添加到数据库

时间:2017-09-14 12:33:34

标签: c# mysql .net asp.net-mvc entity-framework

我是.NET新手。我正在创建一个互联网商店,但我有一个问题

我的错误:

  

System.Data.Entity.Infrastructure.DbUpdateException:'更新条目时发生错误。有关详细信息,请参阅内部异常。'

     

UpdateException:更新条目时发生错误。见   细节的内在例外。

     

SqlException:无法将值NULL插入列' GadgetId',   table' GadgetStorege.dbo.Gadgets&#39 ;;列不允许空值。插入   失败。声明已经终止。

我在解决方案中使用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

enter image description here

我想将对象和删除对象添加到数据库中。 我在我的项目中使用Entity Framewor。 我怎么解决这个问题?

1 个答案:

答案 0 :(得分:2)

SSMS declare auto increment

使用SSMS或使用[Key]注释在数据库表中的PK GadgetId上声明自动增量= 1如果您正在使用Code firt