C# 4.0 通用删除不起作用?
我有一个带有Delete方法的抽象存储库类:C# 4.0 通用删除不起作用?,c#-4.0,entity-framework-4.1,C# 4.0,Entity Framework 4.1,我有一个带有Delete方法的抽象存储库类: public abstract class MyRepository<C, T> : IMyRepository<T> where T : class where C : ObjectContext, new() { private C _entities = new C(); public C Context {
public abstract class MyRepository<C, T> :
IMyRepository<T>
where T : class
where C : ObjectContext, new()
{
private C _entities = new C();
public C Context
{
get { return _entities; }
set { _entities = value; }
}
public virtual void Delete(T entity)
{
_entities.Attach(entity);
_entities.DeleteObject(entity);
_entities.SaveChanges();
}
}
公共抽象类MyRepository:
不记忆的
T:在哪里上课
其中C:ObjectContext,new()
{
私有C_实体=新C();
公共C上下文
{
获取{return\u entities;}
设置{u entities=value;}
}
公共虚拟作废删除(T实体)
{
_实体。附(实体);
_实体。删除对象(实体);
_entities.SaveChanges();
}
}
但是这不编译吗?如何在此处创建通用删除方法?而不是此方法
private C _entities = new C();
使用Activator.CreateInstance:
private C_entities=Activator.CreateInstance();
修改删除方法,如下所示
public virtual void Delete(T entity)
{
_entities.CreateObjectSet<T>().Attach(entity);
_entities.DeleteObject(entity);
_entities.SaveChanges();
}
public virtual void Update(T entity)
{
_entities.CreateObjectSet<T>().Attach(entity);
_entities.ObjectStateManager
.ChangeObjectState(entity, System.Data.EntityState.Modified);
_entities.SaveChanges();
}
公共虚拟作废删除(T实体)
{
_entities.CreateObjectSet().Attach(实体);
_实体。删除对象(实体);
_entities.SaveChanges();
}
公共虚拟无效更新(T实体)
{
_entities.CreateObjectSet().Attach(实体);
_entities.ObjectStateManager
.ChangeObjectState(实体、系统、数据、实体状态、修改);
_entities.SaveChanges();
}
可能where T:object
而不是where T:class
?与“System.Data.Objects.ObjectContext.Attach(System.Data.Objects.DataClasses.IEntityWithKey)”匹配的最佳重载方法具有一些无效参数:参数1:无法从“T”转换为“System.Data.Objects.DataClasses.IEntityWithKey”,其中T:IEntityWithKey
那么,类似这样的内容:_entities.CreateObjectSet().Attach(entity)_entities.ObjectStateManager.ChangeObjectState(entity、System.Data.EntityState.Modified)_entities.SaveChanges();
public virtual void Delete(T entity)
{
_entities.CreateObjectSet<T>().Attach(entity);
_entities.DeleteObject(entity);
_entities.SaveChanges();
}
public virtual void Update(T entity)
{
_entities.CreateObjectSet<T>().Attach(entity);
_entities.ObjectStateManager
.ChangeObjectState(entity, System.Data.EntityState.Modified);
_entities.SaveChanges();
}