.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'
}