DbSet 不包含 SaveChanges 的定义
DbSet does not contain definition for SaveChanges
我正在尝试删除数据网格中的选定行以及数据库中的同一行。
虽然 dbset 不包含 SaveChanges
.
的定义,但我收到一个错误
Linq 和 EF 相对较新。有人知道这可能来自哪里吗?
private void DeleteButton_Click(object sender, RoutedEventArgs e)
{
using (EFContext db = new EFContext())
{
int proId = (ProductDatagrid.SelectedItem as Product).ProductID;
Result result = (from r in db.products where r.ProductID == proId select r).SingleOrDefault();
db.Product.Remove(result);
db.Product.SaveChanges();
ProductDatagrid.ItemsSource = db.Results.ToList();
}
}
您可以从 Remove()
和 SaveChanges()
方法中删除 .Product
。 Result result
将由 Entity Framework 跟踪,因此它将知道要从哪个 table 中删除您的 record
然后您可以调用 db.SaveChanges()
而不会出现任何错误,因为它是在 DbContext (EfContext
) 上被调用:
using (EFContext db = new EFContext())
{
int proId = (ProductDatagrid.SelectedItem as Product).ProductID;
Result result = (from r in db.products where r.ProductID == proId select r).SingleOrDefault();
// .Product removed
db.Remove(result);
db.SaveChanges();
ProductDatagrid.ItemsSource = db.Results.ToList();
}
但是如果你想继续使用 db.Product
的语法,那么你也可以将 Result
对象附加到 dbContext 而无需这样的查询:
using (EFContext db = new EFContext())
{
int proId = (ProductDatagrid.SelectedItem as Product).ProductID;
Result result = new Result { ProductId = proId};
db.Product.Attach(result);
db.Product.Remove(result);
db.Product.SaveChanges();
ProductDatagrid.ItemsSource = db.Results.ToList();
}
或者您可以将实体状态设置为已删除并以这种方式将其删除:
using (EFContext db = new EFContext())
{
int proId = (ProductDatagrid.SelectedItem as Product).ProductID;
Result result = new Result { ProdId = proId };
db.Entry(result).State = EntityState.Deleted;
db.SaveChanges();
ProductDatagrid.ItemsSource = db.Results.ToList();
}
我正在尝试删除数据网格中的选定行以及数据库中的同一行。
虽然 dbset 不包含 SaveChanges
.
Linq 和 EF 相对较新。有人知道这可能来自哪里吗?
private void DeleteButton_Click(object sender, RoutedEventArgs e)
{
using (EFContext db = new EFContext())
{
int proId = (ProductDatagrid.SelectedItem as Product).ProductID;
Result result = (from r in db.products where r.ProductID == proId select r).SingleOrDefault();
db.Product.Remove(result);
db.Product.SaveChanges();
ProductDatagrid.ItemsSource = db.Results.ToList();
}
}
您可以从 Remove()
和 SaveChanges()
方法中删除 .Product
。 Result result
将由 Entity Framework 跟踪,因此它将知道要从哪个 table 中删除您的 record
然后您可以调用 db.SaveChanges()
而不会出现任何错误,因为它是在 DbContext (EfContext
) 上被调用:
using (EFContext db = new EFContext())
{
int proId = (ProductDatagrid.SelectedItem as Product).ProductID;
Result result = (from r in db.products where r.ProductID == proId select r).SingleOrDefault();
// .Product removed
db.Remove(result);
db.SaveChanges();
ProductDatagrid.ItemsSource = db.Results.ToList();
}
但是如果你想继续使用 db.Product
的语法,那么你也可以将 Result
对象附加到 dbContext 而无需这样的查询:
using (EFContext db = new EFContext())
{
int proId = (ProductDatagrid.SelectedItem as Product).ProductID;
Result result = new Result { ProductId = proId};
db.Product.Attach(result);
db.Product.Remove(result);
db.Product.SaveChanges();
ProductDatagrid.ItemsSource = db.Results.ToList();
}
或者您可以将实体状态设置为已删除并以这种方式将其删除:
using (EFContext db = new EFContext())
{
int proId = (ProductDatagrid.SelectedItem as Product).ProductID;
Result result = new Result { ProdId = proId };
db.Entry(result).State = EntityState.Deleted;
db.SaveChanges();
ProductDatagrid.ItemsSource = db.Results.ToList();
}