【问题标题】:ASP Net Core Entity Framework entity creation from different tables从不同的表创建 ASP Net Core Entity Framework 实体
【发布时间】:2018-12-04 11:17:08
【问题描述】:

我正在尝试使用 ASP.NET Core 的实体框架创建 OData 服务。

首先,我是实体框架的新手,但是我已经阅读了很多与这个主题相关的文章。 不幸的是,其中一些写得不好,而且大多数都不是最新的或缺少一些关键信息。所以我要问你。

现状:

我正在尝试创建一个模型,它结合了来自数据源的两个数据表的值。

假设我们有 Order 和 Article 类。 每个订单包含一堆文章。 对象可以通过存储在 Order 和 Article 中的 OrderID 属性进行映射。

所以我们有两个列表,其中包含每个订单和订单合同中的每个文章行

  • 订单 1 (0)
  • --> art1 (0)(0)
  • --> art2 (0)(1)
  • --> art3 (0)(2)
  • 订单 2 (1)
  • --> 艺术1 (1)(0)

当然,订单和文章包含更多属性,但在我的测试用例中,我只想获取 OrderID 和相关文章名称。

public class OrderList
{
    public int OrderID { get; set; }
    public List<string> Article { get; set; }
}

我想创建一个名为 OrderList 的新模型。 在该模型中,我有 OrderID 和文章代码列表(字符串)

我正在从数据库中获取数据并需要它们加入我的新对象 OrderList。

目前,我只是被创建实体关系卡住了。 你们有什么想法可以正确解决这个问题吗?

  • ASP.NET Core 2.1
  • Microsoft.AspNetCore.OData (7.1.0)
  • Microsoft.EntityFrameworkCore (2.1.4)

【问题讨论】:

    标签: c# asp.net-core entity-framework-core odata entity-relationship


    【解决方案1】:

    您想要的是通过导航属性实现的。关注naming conventions,就这么简单:

    public class Order
    {
        public int OrderId { get; set; } // primary key
        public List<Article> Articles { get; set; } // navigation property
    }
    
    public class Article
    {
        public int ArticleId { get; set; } // primary key
        public string Name { get; set; }
    
        public int OrderId { get; set; } // foreign key
        public Order Order { get; set; } // navigation property
    }
    
    
    public MyDbContext : DbContext
    {
        public DbSet<Order> Orders { get; set; }
        public DbSet<Article> Articles { get; set; }
    }
    
    var foo = ctx.Orders.Include(e => e.Articles).ToList();
    

    您可以阅读更多关于它的信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 2017-10-28
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      • 2022-11-02
      相关资源
      最近更新 更多