在Code First中包含外键ID以保存查询?

道伊

我正在使用Entity Framework 6 Code First。

现在,我的模型如下所示:

public class Region
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual List<City> Cities { get; set; }
}

public class City
{
    public int Id { get; set; }
    public string Name { get; set; }
    [Required]
    public virtual Region Region { get; set; }
}

问题是,我得到了一个城市清单。我需要查找每个城市的区域(我也有一个本地区域列表)。

现在,我想我可以执行以下操作:

    foreach (var c in cities)
    {
        if (regions.Any(x => x.Id == c.Region.Id))
    }

在这里,我将不得不从数据库中查找每个城市的区域(延迟加载)。但是,我只需要区域的ID,因此在每个循环中查找区域行对我来说似乎是浪费的。

如果我将城市模型更改为以下形式:

public class City
{
    public int Id { get; set; }
    public string Name { get; set; }
    [ForeignKey("Region")]
    public int RegionId { get; set; }
    [Required]
    public virtual Region Region { get; set; }
}

我可以改为执行以下操作:

foreach (var c in cities)
    {
        if (regions.Any(x => x.Id == c.RegionId)) //no region lookup at Im using the foreign id key
    }

这样对吗?我的意思是,它将为我节省对每个城市的查询,对吗?

如果是这样,那么在进行“代码优先”操作时是否有任何理由不将外来ID密钥包含在模型中?

巴萨姆·阿鲁吉利(Bassam Alugili)

这样对吗?我的意思是,它将为我节省对每个城市的查询,对吗?

它将一个联接保存到Regions表中。您必须使用SQL Profiler进行检查!例如:

具有ID City1,City2的城市列表(未加载区域City1 =具有RegionId 5)现在,您要查找具有ID 5的Region的任何城市。

// EF does not have to join the tables because you have the RegionId
if (myDbContext.Cities.Any(c => c.RegionId == 5))
{
} 

如果是这样,那么在进行“代码优先”操作时是否有任何理由不将外来ID密钥包含在模型中?

不适合我,这是一个好习惯!只需保持一致,并对所有类型为1..n / 1..0or1的关系进行处理即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Code-First Entity Framework中的复合主键中包含外键

来自分类Dev

Web API中带有Code First的外键

来自分类Dev

EF Code First 外键关系

来自分类Dev

mvc 5 code first userid 作为外键 - 如何保存数据

来自分类Dev

如何在Entity Framework 6 Code First中创建多个1:1外键关系?

来自分类Dev

主键约束是否按照EntityFramework Code First中的约定应用于外键

来自分类Dev

EF Code First多个父母的单个外键

来自分类Dev

EF Code First迁移创建额外的外键

来自分类Dev

EF Code First Fluent API,指定外键属性

来自分类Dev

EF Code First-将子表中的两个外键列映射到相同的主键

来自分类Dev

创建不属于Code First上下文上下文的表的外键

来自分类Dev

使用Entity Framework 7 Code First定义自引用外键关系

来自分类Dev

检索在TFS中创建的已保存查询的WIQL

来自分类Dev

UCanAccess/Jackcess 在 Access 中创建查看/保存查询

来自分类Dev

在 Django 中,如何使用 datetime 属性保存查询对象?

来自分类Dev

在哪里保存查询?

来自分类Dev

如何保存查询集?

来自分类Dev

如何优化我的EF Code First查询?

来自分类Dev

如何强制Entity Framework Code First接受“异相”外键类型(数据库表与.NET实体)?

来自分类Dev

如何使用EF6 Code First将外键属性公开给具有导航属性的现有实体

来自分类Dev

MySQL查询中的外键

来自分类Dev

Tab键在VS Code中不缩进

来自分类Dev

在果园中包含Facebook Pixel Code js

来自分类Dev

保存查询中选择子句的结果以在同一查询中重用?

来自分类Dev

Firestore-保存查询结果

来自分类Dev

无法使用帖子保存查询变量

来自分类Dev

子类中的 EF Code First 实体列

来自分类Dev

通过EF 6 / Code First键查找本地缓存的实体

来自分类Dev

在Code First MVC应用程序中查询AspNet身份表

Related 相关文章

  1. 1

    在Code-First Entity Framework中的复合主键中包含外键

  2. 2

    Web API中带有Code First的外键

  3. 3

    EF Code First 外键关系

  4. 4

    mvc 5 code first userid 作为外键 - 如何保存数据

  5. 5

    如何在Entity Framework 6 Code First中创建多个1:1外键关系?

  6. 6

    主键约束是否按照EntityFramework Code First中的约定应用于外键

  7. 7

    EF Code First多个父母的单个外键

  8. 8

    EF Code First迁移创建额外的外键

  9. 9

    EF Code First Fluent API,指定外键属性

  10. 10

    EF Code First-将子表中的两个外键列映射到相同的主键

  11. 11

    创建不属于Code First上下文上下文的表的外键

  12. 12

    使用Entity Framework 7 Code First定义自引用外键关系

  13. 13

    检索在TFS中创建的已保存查询的WIQL

  14. 14

    UCanAccess/Jackcess 在 Access 中创建查看/保存查询

  15. 15

    在 Django 中,如何使用 datetime 属性保存查询对象?

  16. 16

    在哪里保存查询?

  17. 17

    如何保存查询集?

  18. 18

    如何优化我的EF Code First查询?

  19. 19

    如何强制Entity Framework Code First接受“异相”外键类型(数据库表与.NET实体)?

  20. 20

    如何使用EF6 Code First将外键属性公开给具有导航属性的现有实体

  21. 21

    MySQL查询中的外键

  22. 22

    Tab键在VS Code中不缩进

  23. 23

    在果园中包含Facebook Pixel Code js

  24. 24

    保存查询中选择子句的结果以在同一查询中重用?

  25. 25

    Firestore-保存查询结果

  26. 26

    无法使用帖子保存查询变量

  27. 27

    子类中的 EF Code First 实体列

  28. 28

    通过EF 6 / Code First键查找本地缓存的实体

  29. 29

    在Code First MVC应用程序中查询AspNet身份表

热门标签

归档