C# 将创建的记录保存到数据库失败
基本上,实体框架4.5,C4.0。Sql Server 2008 我本来打算创建新的记录并将它们插入表中,但当我检查数据库时,没有任何变化。为什么?C# 将创建的记录保存到数据库失败,c#,entity-framework,C#,Entity Framework,基本上,实体框架4.5,C4.0。Sql Server 2008 我本来打算创建新的记录并将它们插入表中,但当我检查数据库时,没有任何变化。为什么? public DbSet<IxDetails> IxDetailRecords { get; set; } IxContext ixContext = new IxContext(); var list = (from Ix in ixContext.IxDetailRecords select
public DbSet<IxDetails> IxDetailRecords { get; set; }
IxContext ixContext = new IxContext();
var list = (from Ix in ixContext.IxDetailRecords
select Ix).ToList();
for (int k = 0; k < 100; k++)
{
IxDetails ix = ixContext.IxDetailRecords.Create();
ix.EnteredBy = "";// current user;
ix.EntryDate = DateTime.Now;
ix.FacilityID = facility;
ix.FirstName = "";
list.Add(ix);
}
ixContext.SaveChanges();
您正在将项添加到结果中返回的列表中,而不是添加到表示数据库查询的实际集合中 如果查看ixContext.IxDetailRecords的方法,您应该会看到一个附加方法或类似的东西,具体取决于提供程序。使用它将新创建的项附加到数据库上下文。尝试以下操作:
public DbSet<IxDetails> IxDetailRecords { get; set; }
IxContext ixContext = new IxContext();
for (int k = 0; k < 100; k++)
{
IxDetails ix = ixContext.IxDetailRecords.Create();
ix.EnteredBy = "";// current user;
ix.EntryDate = DateTime.Now;
ix.FacilityID = facility;
ix.FirstName = "";
ixContext.IxDetailRecords.Add(ix);
}
ixContext.SaveChanges();
代码优先方法如下所示:
public class YourDatabaseContext : DbContext
{
public DbSet<IxDetails> IxDetailRecords { get; set; }
}
public class DataLoader
{
public void AddRecords()
{
using (var db = new YourDatabaseContext())
{
var newRecord = new IxDetailRecord {... };
db.IxDetailRecords.Add(newRecord);
db.Save();
}
}
}
瑞克在这方面击败了我,但我也打算推荐同样的。关键是你需要将记录添加到上下文中-你只是添加到一个不受上下文跟踪的列表中。我不是故意劫持,只是想确保他得到了答案。不用担心,答案才是最重要的。为什么你仍然有查询?它可以完全删除。您是否先使用EF代码?如果是这样,您可以更新您的帖子以包含您的IxContext类吗?@Love您根本不需要创建列表,只需删除该部分,然后在当前使用Add的位置使用IxContext.IxDetailRecords.Attach将其添加到列表中即可。如果我只给你代码来复制/粘贴,那么下次出现问题时,你将处于完全相同的位置。通读答案;批判性地思考这意味着什么,自己做实验,浏览相关文档/智能感知,如果你仍然有问题,请发表评论,指出问题所在和你尝试过的内容。