0
我在使用EF6和MySql更新實體時遇到問題。實體框架和MySql更新實體
這是部分代碼:
public partial class Repositorio<T> : IRepositorio<T> where T : EntidadBase
{
private readonly IDbContext _contexto;
private IDbSet<T> _entidades;
public Repositorio(IDbContext contexto)
{
this._contexto = contexto;
}
private IDbSet<T> Entidades
{
get
{
if (_entidades == null)
_entidades = _contexto.Set<T>();
return _entidades;
}
}
public void Insert(T entity)
{
try
{
if (entity == null)
throw new ArgumentNullException("entity");
this.Entidades.Add(entity);
this._contexto.SaveChanges();
}
catch (Exception dbEx)
{
throw dbEx
}
}
public void Update(T entidad)
{
try
{
if (entidad == null)
throw new ArgumentNullException("entidad");
this._contexto.SaveChanges();
}
catch (Exception dbEx)
{
throw dbEx;
}
}
}
和我一起類似的東西,用它:
var _repositorio = new Repositorio<MyEntity>(myContext);
var myEntity = _repositorio.GetById(13);
myEntity.Name = "Mooo";
_repositorio.Update(myEntity);
它不拋出任何異常,但數據沒有變化。
Insert()方法完美。
對此有何想法? PS:我使用NuGet Package Installer的MySql.Data.Entities,它包括EF 6.0.0,MySql.Data 6.8.3.0和MySql.Data.Entity.EF6 6.8.3.0。
您的示例代碼顯示了插入方法,但對回購的調用調用了更新方法。你正在調用的更新方法的代碼是什麼? –
你好尼爾。您必須在存儲庫的代碼塊中向下滾動以查看它:-) – dank0ne
請考慮刪除此存儲庫層。它只會麻煩你。首先,你只能更新單個數據實例。如果你想在一次交易中保存很多對象呢?請參閱[此問題](http://stackoverflow.com/q/21758807/861716)以獲得有關該主題的深入討論。和[這一個](http://stackoverflow.com/questions/5625746/generic-repository-with-ef-4-1-what-is-the-point/5626884#5626884)可能會說服你使用'DbSet '和'DbContext'直接。 –