我有一个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
中定义,它是从数据库生成的。
答案 0 :(得分:0)
经过彻底的调试后,我发现跳过Adding
个新记录的逻辑在这两个表中无法正常工作。