.net 实体未创建问题

.net 实体未创建问题,.net,linq,entity-framework,.net,Linq,Entity Framework,我有这门课: public partial class User { private MyEntities _entities; public User() { } public User(MyEntities entities) { _entities = entities; } public IEnumerable<User> GetUsersRegisteredNewsletter()

我有这门课:

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

        }

    }
 }

如果不需要再次创建_实体,这难道不应该工作吗?

您的方法GetUsersRegisteredNewsletter()返回使用默认构造函数创建的用户实例,默认构造函数不会初始化_实体

编辑:实现这一切的更好方法可能是根本不在用户中保存MyEntities实例,也可以使用“using”子句创建MyEntities:


@sinelaw,你的意思是从用户类中删除“私有MyEntities”\u entities;?对不起@sinelaw,没有它,使用\u entities的函数将如何工作?ie.GetUsersRegisteredNewsletter()@sinelaw是的,我可以看到这是可行的,但是没有更好的方法来做这件事吗?如果你问我的话,这是更好的方法。上下文(“MyEntities”)没有理由成为用户状态的一部分。用户的值内容与您当前使用的特定MyEntities上下文实例无关。
    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);
    }
_entities = new LighthouseEntities(); 
using (MyEntities entities = new MyEntities()) {
   // .... do everything, use only the above declared variable 'entities'
}