在具有不同数据库排序规则的 SQL 视图上使用 Include

问题描述 投票:0回答:1

我得到了一个模型和一个 Sql 视图(来自具有另一个排序规则设置的另一个数据库)。

我在模型上放置了一个导航属性,我想包含视图中的数据,但这会导致错误。

在 ApplicationDbContext 中定义并映射到我的类的视图

 builder.Entity<VariantView>().
     ToView("VariantsView")
     .HasKey(v => v.ItemNo);

在我的 EF 核心实体上

[ForeignKey("ItemNo")]
public VariantView? VariantView { get; set;}

在我的查询中我确实喜欢

var q = dbContext.Masters.
  .Include(variant => variant!.VariantView)
  .Where(m => m.Id == request.Id);

在纯 SQL 中,通过强制排序规则可以轻松修复

..
FROM Masters m
LEFT JOIN VariantsView AS vv
     ON vv.ItemNo COLLATE Latin1_General_CI_AS = m.ItemNo COLLATE Latin1_General_CI_AS 
..

有没有办法将其添加到 EF Include 方法中?

注意:我还包含了其他 6 个导航道具,所以不要全部投入 SQL

entity-framework entity-framework-core ef-core-8.0
1个回答
0
投票

我的解决方案是在SQL视图中添加collate语句

所以从

开始
select 
    item.[No_] COLLATE Latin1_General_CI_AS as ItemNo, 
.... 
© www.soinside.com 2019 - 2024. All rights reserved.