基本上,实体框架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();
答案 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();
}
}
}