我一直工作在ASP.NET C#与实体框架和一些人帮助我非常多的某些关键点。
还有一点我也不能完全理解。 难道我们不应该当我们检索EF数据使用对象和它的子对象(外键关系表数据)?
这里是我的数据库设计(这也是显示在我前面回答的问题)
在我的代码,我只是得到这样的会员单位:
//In some aspx.cs file
var Mem = new MemberManager().GetById(2);
//In MemberManager class
public Member GetById(long id)
{
using(var Context = new NoxonEntities())
{
return Context.Member.First(c => c.Id == id);
}
}
当我这样做:
var Mem = new MemberManager().GetById(2);
var Lang = Mem.Language;
//I get
//Error: 'Mem.Language' threw an exception of type 'System.ObjectDisposedException'
为了摆脱这种例外,我需要做到这一点的:
public Member GetById(long id)
{
using(var Context = new NoxonEntities())
{
var Result = Context.Member.First(c => c.Id == id);
//Getting the Language Entity
Result.Language = Context.Language.First(c => c.Id == Result.LanguageId);
return Result;
}
}
我一定要为了有充分的实体运行SELECT? 如果有什么有另一相关表语言表可以说功能表。 我应该这样做:
public Member GetById(long id)
{
using(var Context = new NoxonEntities())
{
var Result = Context.Member.First(c => c.Id == id);
//Getting the Language Entity
Result.Language = Context.Language.First(c => c.Id == Result.LanguageId);
Result.Language.Feature = Context.Language.Feature.First(c => c.Id == Result.FeatureId);
return Result;
}
}
这可以去verrry长,我敢肯定(至少我真的希望)我是错的东西,但如果我们不能使用对象和它的子对象选择后 ,什么是具有EF的目的是什么? 我们只能使用在网站的子对象using(var Context = new NoxonEntities())
块?
谢谢,