1

私は自分のデータベースコンテキストを持っています:

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

4

1 に答える 1