我在编程过程中遇到了一个问题。我开始学习Entityframework,参考了微软虚拟学院网站上的资料,他们有一份关于Entity Framework和asp.net的简短介绍。他们创建了这个泛型类存储库,用于处理poco类。
public class Repository<T> where T : class
{
private BlogDataContext context = null;
protected DbSet<T> DbSet { get; set; }
public Repository()
{
this.context = new BlogDataContext();
DbSet = context.Set<T>();
}
public List<T> getAll()
{
return DbSet.ToList();
}
public T Get(int id)
{
return DbSet.Find(id);
}
public void Add(T entity)
{
DbSet.Add(entity);
}
public void Update(T entity)
{
context.Entry<T>(entity).State = EntityState.Modified;
}
public void Delete(int id)
{
DbSet.Remove(DbSet.Find(id));
}
public void SaveChanges()
{
context.SaveChanges();
}
}
当您需要使用ASP.NET控件编辑数据库中的数据时,会出现问题。直到现在,我一直手动将数据绑定到控件并通过查找具有
Get(int Id)
的数据进行更新。最近我发现可以使用ObjectDataSource控件自动化该过程,但更新方法会产生错误。“附加类型为'CarDealership.DataLayer.UsersExtended'的实体失败,因为另一个相同类型的实体已经具有相同的主键值。”
UsersExtended
是一个Poco类。