C# 实体框架isn';t在WPF中将数据保存到数据库

C# 实体框架isn';t在WPF中将数据保存到数据库,c#,wpf,entity-framework,xaml,C#,Wpf,Entity Framework,Xaml,我正在WPF开发一个POS。 对于CRUD操作,我使用实体框架 已创建WPF视图ProductADD 在控制器文件夹中创建了一个类ProductController ProductController类中实体框架的生成对象 创建了一个方法:SaveProduct(Product-Product),该方法将Product对象作为参数,并使用EF将其保存到数据库中 从Xaml.Cs调用ProductController类的Saveproduct方法,并将新产品数据发送给它 private void

我正在WPF开发一个POS。 对于CRUD操作,我使用实体框架

  • 已创建WPF视图ProductADD
  • 在控制器文件夹中创建了一个类ProductController
  • ProductController类中实体框架的生成对象

  • 创建了一个方法:SaveProduct(Product-Product),该方法将Product对象作为参数,并使用EF将其保存到数据库中

  • 从Xaml.Cs调用ProductController类的Saveproduct方法,并将新产品数据发送给它

    private void Button_Click(object sender, RoutedEventArgs e)
    {
         ProductController pc = new ProductController();
         PRODUCT product = new PRODUCT();
    
         product.PRODUCT_NAME = Product_Name.Text.ToString();
         product.UNITPRICE = Convert.ToInt32(Unit_Price.Text.ToString());
         product.CATEGORY_Id = 1;
         pc.SaveProduct(product);
    
         MessageBox.Show("Product Added Successfully");
    
         this.Close();
    }
    
  • 在ProductController中,以下代码正在更新数据库

    使用系统;
    使用System.Collections.Generic;
    使用System.Linq;
    使用系统文本;
    使用System.Threading.Tasks;
    使用比萨酒廊。模型;
    命名空间PizzaLounge.Controllers
    {
    公共类产品控制器
    {
    PizzaLoungeEntities db=新的PizzaLoungeEntities();
    公共产品(产品)
    {
    db.PRODUCTs.Add(产品);
    db.SaveChanges();
    }
    }
    
    }
    您是如何通过db.products或数据库资源管理器检查产品是否已添加的

    也许您只需要处理您的上下文,更改ProductController,例如:

    using(var db = new PizzaLoungeEntities()){
       db.PRODUCTs.Add(product);
       db.SaveChanges();
    }
    

    或者在使用完ProductController后处理它。

    因为您正在使用附加到项目的mdf文件,所以您的问题类似于此问题

    您正在将数据保存到bin\debug文件夹中的数据库中,然后您会看到项目文件夹中的mdf文件,但看不到数据

    将连接字符串从数据目录更改为
    项目数据库文件的绝对路径。部署时,只需将其更改回|DataDirectory |

    您可能正在连接字符串中使用| DataDirectory |。如果在Visual Studio中进行调试,则您使用的数据库位于bin/debug文件夹中。 不幸的是,如果您通过服务器资源管理器查看数据库,它有一个不同的连接字符串,因此您看不到更改

    此外,如果数据库属性“复制到输出目录”设置为“始终复制”,则每次调试时,您都将覆盖数据库,并且不会看到添加的数据。您可以在添加记录的同一调试会话中使用新的db上下文来检查是否发生这种情况。如果新上下文可以从数据库中获取记录,那么您知道这些记录必须被写入(以及注释中列出的其他检查)


    可以通过将“复制到输出目录”更改为“从不复制”或“如果更新,则复制”来解决此问题。

    您确定要查看正确的数据库吗?显示此方法的代码
    pc.SaveProduct(产品)
    使用表的型号和SaveProduct方法更新您的问题将实际保存操作的代码显示到数据库中,如
    pc.SaveProduct(产品);
    描述的代码不包含savechanges。请在刷新后向我们展示saveproduct在数据库资源管理器中的作用。我尝试了此方法,但它仍然没有写入数据库!您是否尝试了此方法:?更改与savechanges一起保存不需要dispose来更新您的方法,但它仍然没有写入db.db.savechanges()返回1,但在后端它未写入数据库。是否正在使用附加到
    本地sql server的数据库
    ,或者您已将
    mdf文件
    添加到项目中?