无法保存已插入记录的更改

时间:2019-04-25 08:07:29

标签: sql-server asp.net-mvc entity-framework linq

我有一个Entity Framework应用程序,该应用程序具有从数据库生成的模型(数据库优先方法)。

我的函数将新记录添加到DbSet。添加所有内容后,我尝试通过db.SaveChanges()将更改保存到数据库中的表中。数据库中的所有表都使用相同的功能。它们都具有相同的格式:

CREATE TABLE [dbo].[Table1](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Column1] [nvarchar](200) NULL,
    [Column2] [nvarchar](200) NULL,
    [Column3] [decimal](20, 10) NULL,
    [cs_Table1]  AS (checksum([Column1],[Column2])),
PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

某些表具有更多或更少的列。问题在于,导入新记录适用于大多数表,但不适用于两个表。我检查了很多次。它们没有任何重大差异。当我尝试在这两个表上保存更改时,没有错误执行。我已经调试了它,它正确地传递了新实例,但是在db.SaveChanges()上它什么也没做。

我在其他帖子中读到过,有时您会拥有某种数据库副本,并且该副本也会复制到那里。我该如何检查?以及为什么它在某些表上起作用而在某些表上却不起作用。是同一数据库。

我保存更改的代码段:

using (FileStream stream = File.Open(excel, FileMode.Open))
{
    My_Model db = new My_Model ();
    var class = new ExcelExtractingClass(db);
    class.ImportFromExcel(stream);
    db.SaveChanges();
}

ImportFromExcel是一个长函数。但是我敢肯定它可以。关于我的问题,它所做的所有事情都是使用:DbSet.Add(entity)。但是它适用于大多数表。 DbSet在My_Model中定义,它是从数据库生成的。

1 个答案:

答案 0 :(得分:0)

经过彻底的调试后,我发现跳过Adding个新记录的逻辑在这两个表中无法正常工作。