gpt4 book ai didi

entity-framework - Entity Framework 通用存储库

转载 作者:行者123 更新时间:2023-12-02 06:22:23 24 4
gpt4 key购买 nike

我正在使用 Entity Framework CTP5 编写一个通用存储库,用于我的每个模型 CRUD 操作,如下所示:

  public class BaseRepository<TEntity> : IRepository<TEntity> where TEntity : BaseEntity
{
public DbContext Context { get; set; }


public void Insert(TEntity entity)
{
if (Context.Entry<TEntity>(entity).State == EntityState.Detached)
{
Context.Set<TEntity>().Attach(entity);
}
Context.Set<TEntity>().Add(entity);
Context.SaveChanges();

}
public void Delete(int id)
{
TEntity entity = Context.Set<TEntity>().Find(id);
if (Context.Entry<TEntity>(entity).State == EntityState.Detached)
{
Context.Set<TEntity>().Attach(entity);
}
Context.Set<TEntity>().Remove(entity);
Context.SaveChanges();

}
public void Delete(TEntity entity)
{
Context.Set<TEntity>().Remove(entity);
Context.SaveChanges();

}
public void Update(TEntity entity)
{
TEntity status = Context.Set<TEntity>().Find(entity.Id);
status = entity;
Context.SaveChanges();

}



public TEntity GetFirst()
{

var entity = Context.Set<TEntity>().FirstOrDefault();
if (entity == null) return null;
return entity;


}
public TEntity GetNext(int id)
{

var entity = (from u in Context.Set<TEntity>()
where u.Id > id
select u).FirstOrDefault();
if (entity == null) return null;
return entity;

}
public TEntity GetPrevoius(int id)
{

var entity = (from u in Context.Set<TEntity>()
where u.Id < id
orderby u.Id descending
select u).FirstOrDefault();
if (entity == null) return GetFirst();
return entity;
}
public TEntity GetLast()
{

var entity = (Context.Set<TEntity>().OrderByDescending(u => u.Id)).FirstOrDefault();
if (entity == null) return null;
return entity;

}
public TEntity GetById(int id)
{
return Context.Set<TEntity>().Find(id);

}
public int GetMaxId()
{

var max = Context.Set<TEntity>().Count()+ 1;
return max;

}
}

一切正常,但 Update 方法既不会产生任何错误,也不会将任何更改保存回数据库。谁能指导我如何解决这个问题?

最佳答案

您可以使用CurrentValues.SetValues:

public void Update(TEntity entity)
{
TEntity status = Context.Set<TEntity>().Find(entity.Id);
Context.Entry(status).CurrentValues.SetValues(entity);
Context.SaveChanges();
}

它更新标量和复数属性,但不更新导航属性。

关于entity-framework - Entity Framework 通用存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6974660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com