gpt4 book ai didi

c# - Entity Framework 不将数据保存到 WPF 中的数据库

转载 作者:行者123 更新时间:2023-11-30 17:37:38 28 4
gpt4 key购买 nike

我正在 WPF 中开发 POS。对于 CRUD 操作,我使用 Entity Framework 。

  1. 创建了一个 WPF View ProductADD Product Add View Snap
  2. 在 Controller 文件夹中创建了一个类 ProductController
  3. 在 ProductController 类中创建 Entity Framework 的对象 ProductController Calss Snap

  4. 创建了一个方法:SaveProduct(Product product),它将产品对象作为参数并使用 EF 将其保存到数据库中。

  5. 我从 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 中,以下代码正在更新数据库

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using PizzaLounge.Models;

namespace PizzaLounge.Controllers
{
public class ProductController
{
PizzaLoungeEntities db = new PizzaLoungeEntities();
public void SaveProduct(PRODUCT product)
{
db.PRODUCTs.Add(product);
db.SaveChanges();
}
}
}

  1. 代码成功执行,但未将产品保存在数据库中。附言我用过 db.savechanges()。

我是否遗漏了什么或使用了错误的方法来更新数据库?

最佳答案

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

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

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

关于c# - Entity Framework 不将数据保存到 WPF 中的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37671650/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com