我有我的数据库上下文:
public class ProductContext : DbContext
{
public ProductContext() : base ("DefaultConnection") {}
public DbSet<Product> Products {get;set;}
}
和我的存储库:
public class ProductRepository : IProductRepository
{
private ProductContext _dbContext = new ProductContext();
public IQueryable<Product> Products { get { return _dbContext.Products; } }
}
当我在以下位置查询我的数据库时Edit
Action
:
public ActionResult Edit(Guid id)
{
var item = _repository.Products.FirstOrDefault(x => x.Id.Equals(id));
return View(item);
}
我通常会使用 aViewModel
但这纯粹是为了展示场景。
当我使用该var item
行查询数据库时,确实会EntityFramework
更改item
.
我可以item
通过多种方式传递它Services
,Service Layer
然后最终使用我的方法保存它:
public void SaveEntity<TEntity>(TEntity entityToSave) where TEntity : DbEntity
{
if (entityToSave.Id.Equals(Guid.Empty))
_dbContext.Set<TEntity>().Add(entityToSave);
else
_dbContext.Entry<TEntity>(entityToSave).State = EntityState.Modified;
_dbContext.SaveChanges();
}
它不会抛出异常,说已经有一个Entity
与Id
您要保存的相同?