1

希望您能够帮助我。

我在数据库中有 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 接口,但似乎不起作用。

谢谢达米亚诺
_

4

0 回答 0