希望您能够帮助我。
我在数据库中有 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 接口,但似乎不起作用。
谢谢达米亚诺
_