我有以下两个由Entity Framework生成的类..
public partial class Datagrid
{
public int Id { get; set; }
public string Name { get; set; }
public string Location { get; set; }
public Nullable<bool> IsChecked { get; set; }
}
public partial class SampleDbContext : DbContext
{
public SampleDbContext()
: base("name=SampleDbContext")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<Datagrid> Datagrids { get; set; }
}
我有一个WPF应用程序,我有一个列表视图,其中包含每列的复选框..我已经编写了逻辑来查找列表视图中检查的复选框..但是当我遍历复选框时并尝试保存到数据库,数据库没有更新请帮助.. dg是Datagrid类型的对象.. db是SampleDbContext类型的对象
foreach (CheckBox cb in myBoxes)
{
dg.IsChecked = cb.IsChecked; //I want to update each column with the checked value in the listview. cb.Ischecked works perfectly..It says true for the checkboxes that are checked else false
db.SaveChanges(); //NOT updating the database
}
答案 0 :(得分:1)
你的变量&#39; dg&#39;将需要成为dataContext的一部分(&#39; db&#39;在您的代码中)DataGrid的属性。一个例子:
foreach (CheckBox cb in myBoxes)
{
dg.IsChecked = cb.IsChecked;
db.DataGrids.Add(dg);
db.SaveChanges();
}
.SaveChanges()只会将分配给DataGrid属性的项目刷新到数据库。
答案 1 :(得分:1)
根据您的评论,我不清楚是否每次都需要创建复选框或者只是更新复选框。如果创建,它将有点像另一个答案。但是,由于尝试添加新的Datagrid而未提供System.Data.Entity.Validation.DbEntityValidationException
和Name
,因此您可能会获得Location
,这些Id
和foreach (CheckBox cb in myBoxes)
{
Datagrid dg = new Datagrid
{
Name = "NameGoesHere"; // Maybe you're wanting to use cb.Name or cb.Text?
Location = "Location Here";
IsChecked = cb.IsChecked;
};
db.DataGrids.Add(dg);
db.SaveChanges();
}
不可为空且不会(可能)自动填充dg
1}}:
foreach (CheckBox cb in myBoxes)
{
Datagrid dg = db.DataGrids.Where(g => g.Name == cb.Name).SingleOrDefault();
// etc.
如果您只是更新,我仍然不确定您在哪里设置CheckBox
,但也许您可能希望从以下位置查找:
IsChecked
根据评论进行修改:
如果您正在进行双向绑定并将Datagrid
es直接绑定到db.SaveChanges();
个实体的Datagrid
值,那么您不应该做任何事情除了在您准备好保存时简单地致电{{1}}。绑定的{{1}}实体将自行更新。