C# 实体框架isn';t在WPF中将数据保存到数据库
我正在WPF开发一个POS。 对于CRUD操作,我使用实体框架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
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();
}
使用系统;
使用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文件
添加到项目中?