在试图减少代码和班级我用我一直在考虑这个方法量:通用实体保存方法不起作用?
public TEntity Save(TEntity entity)
{
var validatationErrors = Entities.GetValidationErrors().ToList();
if (validatationErrors.Count() > 0)
throw new ValidateException(validatationErrors);
if (Entities.Entry(entity).State == EntityState.Added)
Entities.Set<TEntity>().Add(entity);
else
Entities.Set<TEntity>().Attach(entity);
Entities.SaveChanges();
Entities.Entry(entity).Reload();
return entity;
}
当我创建一个新的产品但它跳过了条件,将它添加到数据库中。因此没有得到保存。同样,如果我尝试修改它不会更改的内容。
为了解决这个问题我要救我的实体在控制器中,像这样:
using (var db = new EntitiesDbContext())
{
db.Products.Attach(product);
db.Entry(product).State = EntityState.Modified;
db.SaveChanges();
}
这似乎是相当低效。 所以我想知道真的是什么问题的通用保存,使其无法正常工作?
你有设置状态来添加/修改?也就是说,Entities.Entry(entity).State' =='EntityState.Added'或'EntityState.Modified'? – 2012-04-27 05:43:53
我在哪里设置?我目前正从控制器操作中设置它,但这看起来效率很低。 – Johannes 2012-04-27 14:08:02