【问题标题】:Fail saving changes to database无法将更改保存到数据库
【发布时间】:2016-04-09 08:40:48
【问题描述】:

我正在尝试使用数据库做一个 Windows 窗体应用程序。

我创建了数据库并添加了实体框架。

这是我用来在数据库中添加数据的代码:

public void AddProductToDataBase()
    {
        try
        {
            DataBase _db = new DataBase();
            var item = new Products();
            item.Title = title.Text;
            item.Subtitile = subtitle.Text;
            item.Description = description.Text;
            item.Price = float.Parse(price.Text);
            _db.Products.Add(item);
            _db.SaveChanges();

            MessageBox.Show("Product successfully added!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
            title.Clear();
            subtitle.Clear();
            description.Clear();
            price.Clear();

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

一切似乎都正常工作,没有错误消息和消息“产品已成功添加”出现,但是当我查看数据库时什么都没有。

我之前在这里搜索过,我发现 Visual Studio 正在制作数据库的副本,如果您将数据库的“复制到输出目录”属性更改为“如果更新则复制”它应该可以正常工作,但它不会,我对实体框架做了同样的改动,还是一样,没有任何变化。

如何在正确的数据库中添加数据?而且我还需要程序是可移植的。

谢谢!!

编辑:这是DataBase.Contex.cs

namespace OlxSelenium
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;

    public partial class DataBase : DbContext
    {
        public DataBase()
            : base("name=DataBase")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public virtual DbSet<Photos> Photos { get; set; }
        public virtual DbSet<Products> Products { get; set; }
    }
}

【问题讨论】:

  • 您的数据库对象是如何定义的?我在您的代码中没有看到对实体的引用。
  • 这就是我引用postimg.org/image/4w1s4x4mn的方式@是错了吗?
  • 不幸的是,该链接没有显示屏幕截图。 :(
  • 您必须在代码中引用您的 DatabaseEntities1。例如使用 using 语句。 using (DataBaseEntities context as new DataBaseEntities()) { //处理数据的代码,使用上下文访问数据库中的表 }

标签: c# mysql database winforms visual-studio-2013


【解决方案1】:

试试这个代码。

try
{
using (DataBase context = new DataBase())
{            
       Products item = new Products();
       item.Title = title.Text;
       item.Subtitile = subtitle.Text;
       item.Description = description.Text;
       item.Price = float.Parse(price.Text);
       context.Products.Add(item);
       context.SaveChanges();

       MessageBox.Show("Product successfully added!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
       title.Clear();
       subtitle.Clear();
       description.Clear();
       price.Clear();
}

}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

【讨论】:

  • 问题不在于将数据添加到数据库中,问题在于将数据添加到正确的数据库中。我可以写入和读取数据库,但在副本中,我想将数据添加到原始数据库
  • 您没有按照 Database.context.cs 文件中的说明映射原始数据库吗?我提供的代码不仅在内存中插入了原始数据库。
猜你喜欢
  • 1970-01-01
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多