无法使用 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 将是覆盖。
我正在尝试使用 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 将是覆盖。