我得到了一个模型和一个 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
我的解决方案是在SQL视图中添加collate语句
所以从
开始select
item.[No_] COLLATE Latin1_General_CI_AS as ItemNo,
....