我需要运行一些自定义SQL来返回表中的对象列表.我正在使用ExecuteStoreQuery.
var q = context.ExecuteStoreQuery<ProductionUnit>(MySelectString, new SqlParameter("@ProductionUnitId", value));
Run Code Online (Sandbox Code Playgroud)
这确实导致q包含ObjectResult集合,但实际的ProductionUnit元素是Detached并且它们的EntityKey为null.在尝试处理其中某些对象或其关系时,这会产生许多问题.我的SQL查询返回一个结果集,其中包含相应ProductionUnits表的所有列(仅此而已).
为了跟踪这些对象我需要做的其他事情还是设计中的这种行为?
我在表中有一个XML列; 我希望将该XML中的某个值"提升"为计算列,并将其编入索引以便加快搜索速度.我有一个函数,它接收XML信息并输出感兴趣的元素,如下所示:
CREATE FUNCTION [dbo].[fComputeValue] (@data XML)
RETURNS datetime
WITH SCHEMABINDING
AS
BEGIN
RETURN @data.value('(/Metadata/Value[@Key="StartDate"])[1]', 'datetime')
END
Run Code Online (Sandbox Code Playgroud)
但是当我尝试创建计算列时:
ALTER TABLE dbo.CustomMetadataTable ADD [StartDate] AS ([dbo].[fComputeValue]([CustomMetadataColumn])) PERSISTED
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Msg 4936,Level 16,State 1,Line 2表'CustomMetadataTable'中的计算列'StartDate'无法保留,因为该列是非确定性的.
它适用于我:
我还应该提到日期时间值是XSD日期时间格式.有任何想法吗?谢谢.