【问题标题】:How to make a generic nhibernate repository that works with ninject?如何制作与 ninject 一起使用的通用 nhibernate 存储库?
【发布时间】:2011-06-05 21:01:36
【问题描述】:

我正在尝试创建我的第一个通用存储库。我从真正简单的开始,但我不确定如何将它全部连接到 ninject 并通过构造函数注入使用它。

   public class NhibernateRepo<T> : INhibernateRepo<T>
    {
        private readonly ISession session;

        public NhibernateRepo(ISession session)
        {
            this.session = session;
        }

        public void Commit()
        {
            using (ITransaction transaction = session.BeginTransaction())
            {
                transaction.Commit();
            }
        }

        public void Delete(T entity)
        {
            session.Delete(entity);
        }

        public void Update(T entity)
        {
            session.Update(entity);
        }

        public T Get(object id)
        {
            return session.Get<T>(id);
        }

        public T Load(object id)
        {
            return session.Load<T>(id);
        }

        public void ReadOnly(object entity, bool readOnly = true)
        {
            session.SetReadOnly(entity, readOnly);
        }

        public void Evict(object entity)
        {
            session.Evict(entity);
        }

        public object Merge(object entity)
        {
            return session.Merge(entity);
        }
    } 

public interface INhibernateRepo<T>
    {
        void Commit();
        void Delete(T entity);
        void Update(T entity);
        T Get(object id);
        T Load(object id);
        void ReadOnly(object entity, bool readOnly = true);
        void Evict(object entity);
        object Merge(object entity);
    }
}

现在我想在我的服务层中使用它。所以我试着做

public MyServiceLayer(INhibernateRepo nhibernateRepo)

但它不喜欢这样,所以我尝试了

public  MyServiceLayer(INhibernateRepo<T> nhibernateRepo)

但它找不到 T。

那么我该怎么做呢?我猜做绑定也是一个挑战,所以我不确定该怎么做。

【问题讨论】:

    标签: c# nhibernate generics ninject ninject-2


    【解决方案1】:

    尝试将&lt;T&gt; 从接口级别移动到方法级别。像这样:

    public void Delete<T>(T instance) ...
    

    【讨论】:

      猜你喜欢
      • 2013-02-10
      • 2011-02-04
      • 1970-01-01
      • 2011-05-21
      • 2011-06-18
      • 2016-09-26
      • 1970-01-01
      • 2016-02-20
      • 2011-05-09
      相关资源
      最近更新 更多