【问题标题】:EF query on specific table queries db with ModelStoreConatiner name as Schema使用 ModelStoreConatiner 名称作为 Schema 对特定表查询 db 的 EF 查询
【发布时间】:2019-04-15 20:24:01
【问题描述】:

我正在开发 Database-First EF 6.2 c# 应用程序。 我从 InterfaceMI_Entities 创建了一个派生类来设置连接字符串,以便我可以使用以下代码来设置上下文:

using (var ctx = new InterfaceMI_Entities(server, database))

当我使用 LINQ 调用一个表 (ma_parm) 时,会生成以下查询:

SELECT 
    <list of columns>
    FROM [InterfaceMI_ModelStoreContainer].[MA_PARM] AS [Extent1]

edmx文件中的EntityContainer设置如下:

<EntityContainer Name="InterfaceMI_ModelStoreContainer">
   <EntitySet Name="MA_PARM" EntityType="Self.MA_PARM" store:Type="Tables" store:Schema="dbo">
          </EntitySet>
   <EntitySet Name="MA_PARM_LAND" EntityType="Self.MA_PARM_LAND" store:Type="Tables" store:Schema="dbo">
          </EntitySet>

MA_PARM_LAND 查询有效,但 MA_PARM 使用 EntityContainer 作为架构名称。

关于为什么将 EntityContainer 用作 MA_PARM 表的架构的任何想法?

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

    我不知道为什么会这样,但正在改变

    store:Schema="dbo"
    

    Schema="dbo"
    

    解决了这个问题。

    【讨论】:

    • 这个 EDMX 后来是如何生成/编辑的? store:Schema="dbo" 总是与store:Type="Views" 组合使用,而不是store:Type="Tables",所以你的EDMX 包含这个元素很奇怪。
    • 我打开了 edmx 图,右键单击并更新了数据库中的模型。生成的模型具有在表上生成的定义查询。对于任何需要插入/更新功能的表,我删除了定义查询并更改了 store:Schema => Schema。
    猜你喜欢
    • 1970-01-01
    • 2021-07-23
    • 2021-01-30
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    相关资源
    最近更新 更多