【问题标题】:Dotnet Entity Framework Include without a Foreign Key没有外键的 Dotnet 实体框架包含
【发布时间】:2020-02-10 21:54:09
【问题描述】:

我有两个模型:

位置

  • 身份证
  • 设施助记符
  • 姓名

设施

  • 身份证
  • 设施助记符
  • 姓名

位置的 FacilityMnemonic 可以为空。该位置可能有一个没有设施的设施助记符。我需要一种方法来构建这些实体,以便我可以做某种形式的

_context.Locations.Where(CONDITIONS HERE).Include("Facility").ToList();

然后能够将其打包为我的 Web API 的漂亮 json 响应。但是,我不能使用外键,因为如果存在没有匹配工具的助记符,则约束将失败。无法确定使用实体框架执行此操作的正确方法。任何指导表示赞赏。

【问题讨论】:

  • 没有主键使用 EF 不是一个好方法,即使我们不能在没有主键的情况下在表中添加任何数据。

标签: entity-framework .net-core entities


【解决方案1】:

您不能在 SQL Server 中使用没有关系的包含。

你可以改用这个

var list = (from a in _context.Location.Where(CONDITIONS HERE) 
            from b in _context.Facility.Where(CONDITIONS HERE related to Location).DefaultOrEmpty()
            select new Location() {
                Id = a.Id,
                Name = a.Name,
                Facilities = b
            }).ToList();

【讨论】:

  • 这不会返回带有嵌套设施的位置吗?
  • "facilities = b" 是位置的嵌套设施。
猜你喜欢
  • 2023-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多