Linq EF6/代码优先和索引:访问/使用索引有什么特别的事情要做吗?

Linq EF6/代码优先和索引:访问/使用索引有什么特别的事情要做吗?,linq,indexing,ef-code-first,Linq,Indexing,Ef Code First,我正在进行我的第一个代码优先项目。我刚刚学习了如何在两列上添加索引 [Required] [Index("IX_NameAndCity", 1, IsUnique = false)] [MaxLength(900)] public string Name { get; set; } [Index("IX_NameAndCity", 2, IsUnique = false)] [MaxLength(900)] public string C

我正在进行我的第一个代码优先项目。我刚刚学习了如何在两列上添加索引

    [Required]
    [Index("IX_NameAndCity", 1, IsUnique = false)]
    [MaxLength(900)]
    public string Name { get; set; }

    [Index("IX_NameAndCity", 2, IsUnique = false)]
    [MaxLength(900)]
    public string City { get; set; }
这个看起来对吗^^^

LINQ中有什么特别的东西可以利用这些索引,还是透明的?我有点期待在我的LINQ中看到对“.IX_NameAndCity”的选择

以下是我现在正在做的:

 var property = _propertyRepository
            .GetProperties()
            .FirstOrDefault(x => x.Name == name && x.City == city);
应该是这样的:

 var property = _propertyRepository
            .GetProperties()
            .FirstOrDefault(x => x.IX_NameAndCity.name == name && IX_NameAndCity.City == city);
还是自动知道有索引?
谢谢大家

索引是在数据库服务器上创建的。正如编写SQL查询时不希望显式引用索引一样,编写LINQ查询时也不希望显式引用索引。实际上,您的实体不会有
IX_NameAndCity
属性。因此,只需使用第一个查询:

var property = _propertyRepository
    .GetProperties()
    .FirstOrDefault(x => x.Name == name && x.City == city);
实体框架将构造相应的SQL查询并将其传递给数据库服务器,数据库服务器将知道它应该(或者可能不应该)使用索引来加速查询执行。它是透明的;别担心