2014-04-21 5 views
-1

J'utilise Repository pattern et dans mon Repository.cs mon objet _dataContext renvoie null. Que puis-je faire pour qu'il ne retourne pas nul?NullReferenceException dans le modèle de référentiel

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

Une exception est-elle levée? –

+0

oui, DataContext lève un type d'exception de System.NullReferenceException –

+1

Utilisez-vous une sorte de cadre IOC? Ninject/Autofac/etc. Peut-être quelque chose qui doit être configuré comme injection? – thsorens

Répondre

0

Le principal problème est que votre DatabaseFactory propriété dispose d'un setter privé, de sorte que vous ne pouvez pas affecter directement quoi que ce soit à lui. Donc, ce que vous allez faire est de créer un champ privé IDatabaseFactory, affectez le paramètre constructeur databaseFactory à ce champ et renvoyez-le dans le getter de votre propriété DatabaseFactory ou faites en sorte que la propriété DatabaseFactory Property setter public.

+1

La DatabaseFactory peut en fait être en lecture seule ou avec un ensemble privé, puisqu'elle est initiée par le constructeur. – thsorens

+0

J'ai créé le champ: 'private IDatabaseFactory _databaseFactory;' Dans le Repository j'ai assigné 'databaseFactory' à' _databaseFactory' et j'ai changé la propriété 'DatabaseFactory' donc: ' get {return _databaseFactory; } ' ' private set {DatabaseFactory = _databaseFactory; } ' et mon problème n'est pas résolu. Ai-je commis une erreur? –

Questions connexes