2014-04-21 29 views
-1

我正在使用Repository模式,並在我的Repository.cs中,我的_dataContext對象返回null。我可以做什麼,以便它不會返回null?存儲庫模式中的NullReferenceException

private BlogDataContext _dataContext; 
     private readonly IDbSet<T> _dbset; 
     private string[] _paths; 

     public Repository(IDatabaseFactory databaseFactory) 
     { 

       DataContext.Database.Log = Console.Write; 
       DatabaseFactory = databaseFactory; 
       _dbset = DataContext.Set<T>(); 
     } 

     protected IDatabaseFactory DatabaseFactory 
     { 
      get; 
      private set; 
     } 

     protected BlogDataContext DataContext 
     { 
      get { return _dataContext ?? (_dataContext = DatabaseFactory.Get()); } 
     } 
+0

是否拋出異常? –

+0

是的,DataContext拋出一個異常類型的System.NullReferenceException –

+1

您是否使用某種IOC框架? Ninject/Autofac /等。可能是需要設置爲注射的東西? – thsorens

回答

0

的主要問題是,你的DatabaseFactory酒店有私人二傳手,所以你不能直接分配任何東西了。因此,您要做的是創建一個私人IDatabaseFactory字段,將構造函數參數databaseFactory分配給此字段,並將其返回到您的DatabaseFactory屬性的獲取方或將DatabaseFactory屬性設置方法公開。

+1

DatabaseFactory實際上可以是隻讀或私有集合,因爲它是通過構造函數啓動的。 – thsorens

+0

我創建了這個字段:'private IDatabaseFactory _databaseFactory;'在存儲庫中,我將'databaseFactory'分配給'_databaseFactory',並且我改變了'DatabaseFactory'屬性: 'get {return _databaseFactory; }' 'private set {DatabaseFactory = _databaseFactory; }' 我的問題沒有解決。我有錯嗎? –