私は自分のデータベースコンテキストを持っています:
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);
}
通常は a を使用しますViewModel
が、これは純粋にシナリオを示すためのものです。
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