【发布时间】:2021-03-17 14:02:58
【问题描述】:
我有一个 ASP MVC .NET Core (C#) 项目,由于业务原因,SQL 表不能有外键,因此,EF 模型不映射关系 (entity.HasMany ....)。
假设 EF 为实体 Project 和 Task 生成一个模型。我想要他们两个之间的关系。一个Project 有多个Tasks,一个Task 属于一个Project。该任务在数据库中有项目 ID(但请记住,它没有设置为 FK)。
现在我想通过LINQ 向 Entity 获取项目列表,并在我处理它的同时获取每个任务的列表。我通过创建一个自定义类 CustomProject(除了由 EF 创建的类)并这样做来实现这一点:
List<CustomProject> projects = (from p in db.Project
select new CustomProject {
//Properties
Tasks = db.Tasks.Where(t => t.IdProject == p.IdProject).ToList()
}).ToList();
问题是,我不想创建自定义类,也不想使用那个符号,我只想使用db.Projects.Include("Tasks"),就是这样。
现在我不介意创建自定义类,但只要我没有几乎相同的东西,但由 EF 创建(有 Project 和 CustomProject,只有其中一个),我不知道是否有办法告诉 EF 类似“嘿,这个我手动创建的自定义类与数据库中的这个表相关并以这种方式映射它......”。
附:我听说这类似于创建另一个部分类,但我不知道......
谢谢
【问题讨论】:
-
不确定这是否可能,但为什么那些“商业原因”会故意违背常识和标准?业务规则不应该说明数据如何存储,因为它不应该影响应用程序的业务逻辑。
标签: c# entity-framework .net-core entity-framework-core