C# 无法使用实体框架在.mdf中插入数据
我试图使用Entity Framework在.mdf文件中插入数据,但数据库中没有保存任何数据。我正在使用VS2013 按钮上的代码是C# 无法使用实体框架在.mdf中插入数据,c#,.net,entity-framework,visual-studio-2013,mdf,C#,.net,Entity Framework,Visual Studio 2013,Mdf,我试图使用Entity Framework在.mdf文件中插入数据,但数据库中没有保存任何数据。我正在使用VS2013 按钮上的代码是 private void BtnSubmit_Click(object sender, RoutedEventArgs e) { Product record = new Product(); record.ProductName = txtProductName.Text; AzadIndustryEnt
private void BtnSubmit_Click(object sender, RoutedEventArgs e)
{
Product record = new Product();
record.ProductName = txtProductName.Text;
AzadIndustryEntities1 Db = new AzadIndustryEntities1();
Db.Products.Add(record);
Db.SaveChanges();
MessageBox.Show("Record Inserted");
}
针对产品表的SQL是
CREATE TABLE [dbo].[Products] (
[ProductID] INT IDENTITY (1, 1) NOT NULL,
[ProductName] VARCHAR (50) NULL,
[ProductQuantity] INT NULL,
[PricePerUnit] VARCHAR (50) NULL,
[ProductDescription] VARCHAR (50) NULL,
[UserID] INT NULL,
[CustomerID] INT NULL,
CONSTRAINT [PK_Products] PRIMARY KEY CLUSTERED ([ProductID] ASC),
CONSTRAINT [FK_Products_ToTable_Customer] FOREIGN KEY ([CustomerID]) REFERENCES [dbo].[Customer] ([CustomerID]),
CONSTRAINT [FK_Products_ToTable_Products] FOREIGN KEY ([UserID]) REFERENCES [dbo].[Users] ([UserID])
) 而不是实例化模型对象并添加到实体对象。尝试直接访问实体对象:
private void BtnSubmit_Click(object sender, RoutedEventArgs e)
{
AzadIndustryEntities1 Db = new AzadIndustryEntities1();
Products product = new Products();
Products.ProductName = txtProductName.Text;
Db.Products.Add(product);
Db.SaveChanges();
MessageBox.Show("Record Inserted");
}
//编辑-希望采用不同的方法
private void BtnSubmit_Click(object sender, RoutedEventArgs e)
{
AzadIndustryEntities1 Db = new AzadIndustryEntities1();
Product p = new Product() { p.ProductName = txtProductName.Text };
db.AddToProducts(p);
db.SaveChanges();
}
以下内容以前对我有用
private void BtnSubmit_Click(object sender, RoutedEventArgs e)
{
AzadIndustryEntities1 Db = new AzadIndustryEntities1();
Product p = db.Products.Create()
p.ProductName = txtProductName.Text;
db.Products.Add(p);
db.SaveChanges();
}
我的问题解决了。去解释一下,这样它也能帮助别人
由于.mdf file Copy to Output Directory的默认属性是Copy always,因此在调试程序时,.mdf文件的副本会复制到bin文件夹中的debug文件夹中,选择“在解决方案资源管理器中显示所有文件”以查看bin文件夹,无论我们通过代码在数据库中做什么更改,它都会保存在debug文件夹中复制的.mdf中。当我们再次调试我们的程序时,同样的步骤会再次执行,并覆盖以前的数据库。为防止这种情况发生,上述.mdf文件的属性应设置为“复制”(如果较新),如果模型中只有任何更改,则会覆盖.mdf。您看到的错误是什么?添加时是否确保设置了所有必需的非空字段?很难从你的代码中分辨出来。你能用调试器一步一步地检查你的代码吗?执行程序时没有任何错误或异常。只有一个非空字段是产品ID,它是自动生成的。什么是产品?您的数据库实体?因为Db.Products.Addrecord;产品与产品不匹配。如果对您的模型没有更深入的了解,很难判断。Product是一个模型类,Products是DB model的一个实体。我无法使用它,因为在.sln中不存在此类类产品。抱歉…您有EF为您创建的模型查看器/对象查看器吗?抱歉,回复太晚。是的,我有模型查看器。我应该添加它的快照吗?