实体框架核心缺少视图支持

时间:2016-11-29 11:37:30

标签: c# entity-framework-core

我已经阅读了实体框架核心中缺乏视图支持的内容。但我想知道最好的方法是什么?

我似乎找到了一些解决方法。 就像将实体类作为视图的表格一样,但这将导致手动工作将其移除,包括在迁移中。

这似乎是一种避免迁移添加它们的方法:

SELECT a.uid, a.pqid, a.rqid
FROM some_table a
INNER JOIN
(
    SELECT DISTINCT uid, pqid, rqid, SUBSTRING_INDEX(SUBSTRING_INDEX(rqid, ',', hundreds.acnt * 100 + tens.acnt * 10 + units.acnt + 1), ',', -1) as a_rqid
    FROM some_table
    CROSS JOIN
    (
        SELECT 1 acnt UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0
    ) units
    CROSS JOIN
    (
        SELECT 1 acnt UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0
    ) tens
    CROSS JOIN
    (
        SELECT 1 acnt UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0
    ) hundreds
) sub0
ON a.uid = sub0.uid
AND FIND_IN_SET(sub0.a_rqid, a.pqid)
INNER JOIN
(
    SELECT DISTINCT uid, pqid, rqid, SUBSTRING_INDEX(SUBSTRING_INDEX(rqid, ',', hundreds.acnt * 100 + tens.acnt * 10 + units.acnt + 1), ',', -1) as a_rqid
    FROM some_table
    CROSS JOIN
    (
        SELECT 1 acnt UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0
    ) units
    CROSS JOIN
    (
        SELECT 1 acnt UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0
    ) tens
    CROSS JOIN
    (
        SELECT 1 acnt UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0
    ) hundreds
) sub1
ON a.uid = sub1.uid
GROUP BY a.uid, a.pqid, a.rqid
HAVING COUNT(DISTINCT sub0.a_rqid) = COUNT(DISTINCT sub1.a_rqid)

IsMigration变量应该是dbcontext set中的静态属性,默认为true,并且在startup.cs中,在配置方法中将其设置为false。

但这是处理它的最好方法吗?

是否支持EF Core中的观点?

0 个答案:

没有答案