希望你能帮助我。
我在db中有2个表:Page和Page_L这些表在db中配置了一对多关系,其中Page是主表,而Page_L是从属表。
表格页面的结构是:
Int IdPage (PK)
Int Order Not Null
表Page_L的结构是:
Int IdPage_L (PK)
Int IdPage Not Null
Int IdLanguage Not Null
Varchar(255) Title
Varchar(MAX) Description
我想将这两个表映射到一个类中。
我开发了这段代码但结果并不能让我满意:
public class MyDbContext : DbContext
{
public MyDbContext()
: base("ConnectionString")
{
}
public IDbSet<Page> Pages
{
get { return Set<Page>(); }
}
public IDbSet<Page_L> Page_Ls
{
get { return Set<Page_L>(); }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
public class Page
{
[Key]
public IdPage Id { get; set; }
public int Order { get; set; }
public ICollection<Page_L> Page_Ls { get; private set; }
}
public class Page_L
{
[Key]
public IdPage_L Id { get; set; }
public int IdPage { get; set; }
public int IdLanguage { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
int LanguageID = (int)System.Configuration.ConfigurationSettings.AppSettings["LanguageID"];
MyDbContext context = new MyDbContext();
var page = context.Pages.First();
var page_L = page.Page_Ls.Where(p=>p.IdLanguage==LanguageID).FirstOrDefault();
if(page_L!=null)
Response.Write(page_L.Title);
}
在Page_Load方法中,我获得了搜索First()
.Where(p=>p.IdLanguage==LanguageID)
结果的第一页。
我想绕过这个,在AppSettings中合并由LanguageID过滤的Page和Page_L,所以我可以这样做:
protected void Page_Load(object sender, EventArgs e)
{
MyDbContext context = new MyDbContext();
var page = context.Pages.First();
Response.Write(page.Title);
}
我尝试使用Page_L,例如Page的界面,但似乎无效。
感谢
达米亚诺