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

时间:2010-05-26 14:31:17

标签: entity-framework-4

我是一个实体框架新手,我想知道我是否能够以我想要的方式使用它。我使用的是Visual Studio 2010和.NET 4。

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

我想创建存储过程来查询XML字段以带回有意义的数据,在这种情况下是产品数据。 e.g ...

选择         C.id AS [Id],         C.xmlNode.value('(/ node / data [@alias =''ProdName''])[1]','NVARCHAR(1024)')AS ProductName,         C.xmlNode.value('(/ node / data [@alias =''ProdDesc''])[1]','NVARCHAR(1024)')AS ProductDescription 来自cmsContent C 哪里 C.xNode.query('data(/ node [1] / @ nodeTypeAlias)')。value('。','VARCHAR(30)')='产品'

然后我想通过EDMX enity图将这些存储过程的输出映射到我的实体类。所以我想将上面的查询映射到一个名为Products的类。产品类将是只读的,不需要更新这些对象,因为这是通过CMS进行的。

以这种方式使用entiry框架是否可行?如果是这样的话,因为我不能让Stored Procs在EDMX图中生成所需的类,因为当我使用向导时这不会发生?

2 个答案:

答案 0 :(得分:1)

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

<Schema ...>
  <EntityContainer ...>
    <EntitySet Name="blah" EntityType="BlahModel.Store.blah">
      <DefiningQuery>
        select ... from blah
      </DefiningQuery>
    </EntitySet>
  </EntityContainer>
  ...
</Schema>

答案 1 :(得分:0)

我认为您必须创建一个复杂类型,并将SP映射到此。请参阅此MSDN article

相关问题