ef怎么实现只更新指定字段?
我在网上找了个EF的EntityRepository,自己改了改,在实际使用中发现,不能更新指定的字段,我想自己写一个方法,但总是报错。刚学EF请大能之士,帮我看看。指点一二呀。
这是我的代码,最后一个方法是我写的方法,总是报错。
这是我的代码,最后一个方法是我写的方法,总是报错。
namespace Model.EF
{
public class EntityRepository<TEntity> : IRepository<TEntity>
where TEntity : class, IEntity
{
private readonly NerdDinners m_dbContext;
private ObjectContext context;
public EntityRepository()
{
m_dbContext =new NerdDinners();
}
protected virtual void OnLoaded(TEntity entity)
{
}
protected DbSet<TEntity> DbSet
{
get { return m_dbContext.Set<TEntity>(); }
}
public IEnumerable<TEntity> FindAll()
{
return DbSet;
}
public List<TEntity> FindBy(string where)
{
var list = DbSet.SqlQuery(where);
return list.ToList();
}
public List<TEntity> FindPageList(string where, int pageIndex, int pageSize, out int totalRecord)
{
totalRecord = 0;
var list = DbSet.SqlQuery(where).Skip((pageIndex - 1) * pageSize).Take(pageSize);
totalRecord = DbSet.SqlQuery(where).Count();
return list.ToList();
}
public TEntity FindById(int id)
{
return DbSet.SingleOrDefault(entity => entity.ID== id);
}
public void Add(TEntity entity)
{
DbSet.Add(entity);
m_dbContext.SaveChanges();
}
public void Delete(TEntity entity)
{
var entry = m_dbContext.Entry(entity);
if (entry.State == EntityState.Detached)
{
//DbSet.Attach(entity);
entry.State = EntityState.Deleted;
//var entityToUpdate = FindById(entity.Id);
//EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper<TEntity, TEntity>().Map(entity, entityToUpdate);
}
m_dbContext.SaveChanges();
}
public void Update(TEntity entity)
{
var entry = m_dbContext.Entry(entity);
if (entry.State == EntityState.Detached)
{
//DbSet.Attach(entity);
entry.State = EntityState.Modified;
//var entityToUpdate = FindById(entity.Id);
//EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper<TEntity, TEntity>().Map(entity, entityToUpdate);
}
m_dbContext.SaveChanges();
}
public void Update(TEntity entity, params string[] fileds)
{
var entry = m_dbContext.Entry(entity);
Type Ttype = typeof(TEntity);
var entityToUpdate = FindById(entity.ID);
context.AttachTo(Ttype.Name, entityToUpdate);
var stateEntry = context.ObjectStateManager.GetObjectStateEntry(entity);
for (int i = 0; i < fileds.Length - 1; i++)
{
stateEntry.SetModifiedProperty(fileds[i]);
}
m_dbContext.SaveChanges();
}
}
...全文
相关推荐
EF.zip_.net EF 数据库映射配置_ef
**Data Annotations**: Data Annotations是通过在实体类属性上添加特定的特性来指定数据库字段的特性,例如`[Key]`表示主键,`[Required]`表示非空,`[StringLength
使用实体框架通过动态过滤和排序实现分页
在EF中,可以使用`Skip`和`Take`方法实现分页。`Skip`用于跳过指定数量的记录,`Take`用于获取指定数量的记录。
EF(EntityFramework) 插入或更新数据报错的解决方法
主键是表中唯一标识每条记录的字段,如果在插入新记录时没有正确地生成或指定主键值,数据库可能无法正确识别新数据,导致插入失败。解决此问题的一种方法是确保表的主键ID字段设置为自增。
利用EF6简单实现多租户的应用
接下来,我们将详细介绍如何使用EF6来实现多租户应用的架构。首先,在数据库中为每个需要区分的实体表添加一个TenantId字段。这个字段用于标识数据属于哪一个租户。
C#开发定时发送邮件(可用)
我们可以创建一个简单的日志表,包含邮件的ID、发送时间、接收人、主题、状态等字段。在邮件发送后,更新对应记录的状态,如成功或失败。


LINQ
