DefiningQuery 元素 (SSDL)
以存储架构定义语言 (SSDL) 表示的 DefiningQuery 元素允许您在基础数据库中直接执行 SQL 语句。 DefiningQuery 元素通常与数据库视图的用法类似,但视图是在存储模型中而非数据库中定义的。 DefiningQuery 元素中定义的视图可以通过 EntitySetMapping 元素映射到概念模型中的实体类型。 这些映射是只读的。 有关更多信息,请参见 How to: Add a Defining Query。
下面的 SSDL 语法显示 EntitySet 的声明,后跟包含用于检索视图的查询的 DefiningQuery 元素。
<Schema>
<EntitySet Name="Tables" EntityType="Self.STable">
<DefiningQuery>
SELECT TABLE_CATALOG,
'test' as TABLE_SCHEMA,
TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
</DefiningQuery>
</EntitySet>
</Schema>
可以使用实体框架 中的存储过程对视图启用读写方案。 可以将数据源视图或 Entity SQL 视图作为基表用于检索数据和由存储过程处理的更改。
可以将 DefiningQuery 元素用于目标 Microsoft SQL Server Compact 3.5。 尽管 SQL Server Compact 3.5 不支持存储过程,但可以使用 DefiningQuery 元素实现类似功能。 另一个有用之处在于,可以创建存储过程以克服编程语言中使用的数据类型与数据源的数据类型的不匹配。 可以编写一个 DefiningQuery,它可以采用特定的参数集,然后调用具有不同参数集的存储过程,例如,一个删除数据的存储过程。