0

基本上,实体框架 4.5,c# 4.0。数据库服务器 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();
4

3 回答 3

0

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

如果您查看方法,ixContext.IxDetailRecords您应该会看到一个Attach方法(或类似的东西,取决于提供者)。使用它将新创建的项目附加到数据库上下文。

于 2012-11-14T18:36:18.363 回答
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();
于 2012-11-14T18:41:04.203 回答
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();
        }
    }
}
于 2012-11-14T18:48:56.683 回答