【问题标题】:.NET Adding object to database.NET 将对象添加到数据库
【发布时间】: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

enter image description here

我想向数据库添加对象和删除对象。 我在我的项目中使用实体框架。 我该如何解决这个问题?

【问题讨论】:

  • 你用的是什么版本的EF?
  • 为您的 ID 添加 [Key] 属性
  • @mjwills EF 6.1.3 版本

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


【解决方案1】:

使用 SSMS 或 [Key] 注释在您的数据库表中的 PK GadgetId 上声明 Auto-increment = 1(如果您使用的是 Code firt)

【讨论】:

    猜你喜欢
    • 2010-10-09
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多