C# 无法使用实体框架在.mdf中插入数据

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

我试图使用Entity Framework在.mdf文件中插入数据,但数据库中没有保存任何数据。我正在使用VS2013

按钮上的代码是

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为您创建的模型查看器/对象查看器吗?抱歉,回复太晚。是的,我有模型查看器。我应该添加它的快照吗?