0

Delete メソッドを持つこの抽象リポジトリ クラスがあります。

   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();
        }
    }

しかし、これはコンパイルされませんか?ここで一般的な削除メソッドを作成するにはどうすればよいですか?

4

2 に答える 2

0

これの代わりに

private C _entities = new C();

Activator.CreateInstanceを使用します。

private C _entities = Activator.CreateInstance<T>();
于 2012-08-24T06:48:07.233 に答える
0

Delete次のようにメソッドを変更します

    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();
    }
于 2012-08-24T06:49:05.037 に答える