无法使用 Entity Framework 在 .mdf 中插入数据

Unable to Insert data in an .mdf using Entity Framework

我正在尝试使用 Entity Framework 在 .mdf 文件中插入数据,但数据库中没有保存任何数据。 (我使用的是 VS 2013)

针对按钮的代码是

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 相对于产品 Table 是

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 文件的默认 属性 复制到输出目录 始终复制 所以当我们调试我们的程序时,.mdf 文件的副本被复制到 debug 文件夹 中,它位于 bin 文件夹 中( Select 解决方案资源管理器 中显示所有文件 以查看 bin 文件夹)因此,无论我们通过 [=14= 在数据库中进行什么更改]code 它保存在调试文件夹中的 copied .mdf 中。当我们调试我们的程序再次时,再次执行相同的步骤并且先前的数据库被覆盖。为了防止这种情况发生,上面提到的 .mdf 文件的 属性 应该设置为 Copy if newer 所以,如果模型有任何变化,那么 .mdf 将是覆盖。