代码之家  ›  专栏  ›  技术社区  ›  BikerP

实体框架EDMX模型与存储过程

  •  1
  • BikerP  · 技术社区  · 16 年前

    我有一个内容管理系统,它将所有数据存储在一个表的xml字段中。表cmsContent只包含两个字段,id和XmlNode

    我想创建存储过程来查询XML字段,以返回有意义的数据,在本例中是产品数据。例如。。。

    C.id为[id], C.xmlNode.value('(/node/data[@alias=''ProdName'])[1],'NVARCHAR(1024)')作为产品名称, C.xmlNode.value('(/node/data[@alias=''ProdDesc'])[1]','NVARCHAR(1024)')作为ProductDescription 来自CMS内容C 哪里

    然后我想通过EDMX enity图将这些存储过程的输出映射到我的实体类。所以我想把上面的查询映射到一个名为Products的类。products类将是只读的,不需要升级这些对象,因为这是通过CMS完成的。

    以这种方式使用实体框架是否可行?如果是这样的话,我怎么能让存储过程在EDMX图中生成所需的类,因为在我使用向导时不会发生这种情况?

    2 回复  |  直到 16 年前
        1
  •  1
  •   kdawg    16 年前

    如果它是只读的,那么可以为存储模型中的EntitySet提供一个DefiningQuery。这实际上是存储的只读视图,您可以根据需要定义结果形状。然后,您可以将它映射到实体或复杂类型(如果复杂类型是只读的,可能会更容易)

    <Schema ...>
      <EntityContainer ...>
        <EntitySet Name="blah" EntityType="BlahModel.Store.blah">
          <DefiningQuery>
            select ... from blah
          </DefiningQuery>
        </EntitySet>
      </EntityContainer>
      ...
    </Schema>
    
        2
  •  0
  •   Robert Massa    16 年前

    我认为您必须创建一个复杂类型,并将SP映射到此类型。看到这个了吗 MSDN article