将创建的记录保存到DB失败

时间:2012-11-14 18:30:03

标签: c# entity-framework

基本上,实体框架4.5,c#4.0。 Sql Server 2008。

我打算创建新记录并将它们插入到表中但是当我检查数据库时没有任何改变。为什么呢?

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();

3 个答案:

答案 0 :(得分:0)

您正在将项目添加到结果中返回的列表中,而不是添加到表示数据库查询的实际集合中。

如果你看一下ixContext.IxDetailRecords的方法,你应该看到一个Attach方法(或者这些方法,取决于提供者)。使用它将新创建的项附加到数据库上下文。

答案 1 :(得分:0)

试试这个:

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();

答案 2 :(得分:0)

代码优先方法如下所示:

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();
        }
    }
}