субъект не создал проблему - PullRequest
0 голосов
/ 23 января 2011

У меня есть этот класс:

public partial class User
{
    private MyEntities _entities;

    public User()
    {
    }

    public User(MyEntities entities)
    {
        _entities = entities;
    }

    public IEnumerable<User> GetUsersRegisteredNewsletter()
    {
        return (from u in _entities.Users
                where u.Subscribe_Newsletter == true
                select u);
    }

    public IEnumerable<CallTimeOption> GetUserCallTimeOptions
    { 
        get
        {
            //_entities = new LighthouseEntities();   
            // if we uncomment the line above it works     

            var query = from a in _entities.Users.Include("CallTimeOptions")
                        where a.Id == this.Id
                        && a.CallTimeOptions.Any()
                        select a.CallTimeOptions; 

            return query.SelectMany(i => i);

        }

    }
 }

}

Теперь, когда я вызываю GetUserCallTimeOptions, он выдает ошибку "Ссылка на объект не установлена ​​на экземпляр объекта"

    MyEntities _entities = new MyEntities();
    User user = new User(_entities);
    IEnumerable<User> u = user.GetUsersRegisteredNewsletter();

    foreach (var a in u)
    {

             foreach (var y in user.GetUserCallTimeOptions)
                Response.Write(y.Text);
    }

но если я раскомментирую эту строку в GetUserCAllTimeOptions, то она будет работать:

_entities = new LighthouseEntities(); 

Разве это не должно работать без необходимости повторного создания _entities?

1 Ответ

1 голос
/ 23 января 2011

Метод GetUsersRegisteredNewsletter () возвращает экземпляры User, созданные с помощью конструктора по умолчанию, который не инициализирует _entities.

EDIT : вероятно, лучшим способом сделать все это будетвообще не хранить экземпляр MyEntities в User, а также создавать MyEntities с предложением «using»:

using (MyEntities entities = new MyEntities()) {
   // .... do everything, use only the above declared variable 'entities'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...