简单的问题。我没有使用NHibernate来解决这个问题,但是现在我使用了EntityFramework:
想象一下,我有一辆车,里面有轮胎清单。
我想删除一辆汽车的轮胎,所以我想更新它。 类似的东西:
Car.Tires.Remove(tire);
然后我用这个更新方法更新汽车对象:
public virtual void Update(T obj)
{
TryAttach(obj);
SetAllModified(obj);
SaveChanges();
}
问题是在更新后,汽车仍然有相同数量的轮胎。
当我调用更新方法时,如何更新轮胎列表?
答案 0 :(得分:0)
您需要在数据库中找到轮胎,然后将其删除:
var tire=context.Tires.Where(t=>t.Name==tireName).Single();
Car.Tires.Remove(tire);
context.SaveChanges();
答案 1 :(得分:0)
首先,你设置的方式有点奇怪...没有更多的代码就很难弄清楚你在做什么但是如果我自己做的话,这就是我的期望实体框架。
首先......你需要一个DbContext,你的上下文看起来像这样......
public class SomeContext : DbContext
{
public DbSet<Car> Cars { get; set; }
public DbSet<Tyre> Tires { get; set; }
}
然后是一些pocos ......
public class Car {
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual List<Tyre> Tires { get; set; }
}
public class Tyre {
public virtual int Id { get; set; }
// More properties...
[ForeignKey("CarId")]
public virtual int CarId { get; set; }
public virtual Car Car { get; set; }
}
然后我希望你做这样的事情......经过漫长的一天后,我的大脑工作效果不一样但基本上......从你从数据库中加载的Car对象中移除你不再需要的轮胎然后保存您的更改。
using (var context = new SomeContext())
{
var car = context.Cars.Find(carId);
var tyre = car.Tires.Single(t => t.Id == tireId);
car.Tires.Remove(tyre);
context.SaveChanges();
}
希望这有帮助。