ASP Net Core Entity Framework 从不同表创建实体
ASP Net Core Entity Framework entity creation from different tables
我正在尝试使用 Entity Framework 为 ASP.NET 核心创建 OData 服务。
首先,我是 Entity Framework 的新手,但我已经阅读了很多与此主题相关的文章。
不幸的是,其中一些写得不好,而且大多数不是最新的或缺少一些关键信息。所以我要问你。
现状:
我正在尝试创建一个模型,它结合了数据源的两个数据表中的值。
假设我们有 class 订单和文章。
每个订单包含一堆文章。
对象可以通过存储在 Order 和 Article 中的 OrderID 属性 映射。
所以我们有两个列表,其中包含每个订单和订单合同中的每个文章行
- 订单 1 (0)
- --> art1 (0)(0)
- --> art2 (0)(1)
- --> art3 (0)(2)
- 订单 2 (1)
- --> art1 (1)(0)
当然,订单和商品包含更多属性,但在我的测试用例中,我只想获取 OrderID 和相关商品名称。
public class OrderList
{
public int OrderID { get; set; }
public List<string> Article { get; set; }
}
我想创建一个名为 OrderList 的新模型。
在那个模型中,我有 OrderID 和文章代码列表(字符串)
我正在从数据库获取数据并需要它们加入我的新对象 OrderList。
目前,我刚刚被创建实体关系卡住了。
你们有解决这个问题的好主意吗?
- ASP.NET 核心 2.1
- Microsoft.AspNetCore.OData (7.1.0)
- Microsoft.EntityFrameworkCore (2.1.4)
您想要的是通过导航属性实现的。当跟随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。
我正在尝试使用 Entity Framework 为 ASP.NET 核心创建 OData 服务。
首先,我是 Entity Framework 的新手,但我已经阅读了很多与此主题相关的文章。 不幸的是,其中一些写得不好,而且大多数不是最新的或缺少一些关键信息。所以我要问你。
现状:
我正在尝试创建一个模型,它结合了数据源的两个数据表中的值。
假设我们有 class 订单和文章。 每个订单包含一堆文章。 对象可以通过存储在 Order 和 Article 中的 OrderID 属性 映射。
所以我们有两个列表,其中包含每个订单和订单合同中的每个文章行
- 订单 1 (0)
- --> art1 (0)(0)
- --> art2 (0)(1)
- --> art3 (0)(2)
- 订单 2 (1)
- --> art1 (1)(0)
当然,订单和商品包含更多属性,但在我的测试用例中,我只想获取 OrderID 和相关商品名称。
public class OrderList
{
public int OrderID { get; set; }
public List<string> Article { get; set; }
}
我想创建一个名为 OrderList 的新模型。 在那个模型中,我有 OrderID 和文章代码列表(字符串)
我正在从数据库获取数据并需要它们加入我的新对象 OrderList。
目前,我刚刚被创建实体关系卡住了。 你们有解决这个问题的好主意吗?
- ASP.NET 核心 2.1
- Microsoft.AspNetCore.OData (7.1.0)
- Microsoft.EntityFrameworkCore (2.1.4)
您想要的是通过导航属性实现的。当跟随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。