【问题标题】:How to select the content of different table in one model如何在一个模型中选择不同表格的内容
【发布时间】:2018-04-01 12:58:41
【问题描述】:

我有什么:

2 个表,称为 ContentAboutModel。在Content,我有以下设计:

AboutModel 具有以下设计:

我的代码中有这些类:

public class Content : BaseEntity
{
    public int Id { get; set; }

    public string WebsiteTitle { get; set; }
    public string WebsiteDescription { get; set; }

    public virtual ICollection<AboutModel> About { get; set; }
}

public class ContentConfiguration : IEntityTypeConfiguration<Content>
{
    public void Configure(EntityTypeBuilder<Content> b)
    {
        b.HasKey(x => x.Id);
    }
}

public class AboutModel : BaseEntity
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Message { get; set; }

    public int ContentId { get; set; }
    public virtual Content Content { get; set; }
}

public class AboutModelConfiguration : IEntityTypeConfiguration<AboutModel>
{
    public void Configure(EntityTypeBuilder<AboutModel> b)
    {
        b.HasKey(x => x.Id);
    }
}

我在添加外键之前是这样的:

    var content = _contentRepository.Query().SingleOrDefault();

但是当我从内容表中取出行时,About 集合为空。我需要帮助来了解如何访问 about 内容。

我的目标是拥有一个file.cshtml 和一个模型Content,并从中访问ContentAbout 的内容并将其显示在页面上。

【问题讨论】:

    标签: c# sql asp.net sql-server entity-framework


    【解决方案1】:

    实现这一目标的方法很少。你可以试试:

    var queryResult = myDbContexy.Content.Include(foo => foo.About).SingleOrDefault();
    

    或者:

    var anonymousResult = myDbContext.Content.Select(foo => new {Content = foo, About = foo.About}).ToList();
    

    您也可以使用 LINQ 中的 Join 语句,但我不喜欢它;)

    有关更多信息,您可以阅读 EF 中的延迟加载。

    【讨论】:

    • 谢谢。这就是我一直在寻找的。欣赏它。
    猜你喜欢
    • 2014-04-22
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多