3

我创建了一个像

CREATE TABLE [dbo].[tab1]( 
 [Id] [int] NOT NULL, 
 [Name] [varchar](100) NOT NULL, 
 [Meta] [xml] NULL, 


CONSTRAINT [PK_tab1] PRIMARY KEY CLUSTERED  
( 
     [Id] ASC 
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

当我执行 linq to sql 查询以获取数据时,它会引发错误“根级别的数据是无效的 linq”。在进一步调查中,我知道在这种情况下元列是空的。实际上它是可以为空的我是否必须删除可以为空的并将一些空白根节点设置为默认值,或者还有其他方法可以消除错误。


我的 linq 查询引发错误

     var obj1= (from obj in dbContext.tab1s
  where obj.id== 123
select obj).FirstOrDefault<Tab1>();
4

2 回答 2

2

如果 XML 列的值为 ,则在任何情况下都不会收到此错误NULL

但是,如果该字段包含格式错误的 XML,您将收到此错误,如错误所示。

SQL Server 允许您这样做:

UPDATE tab1
SET Meta = 'blah'
WHERE id = 123

显然字符串“blah”是无效的 XML,但 SQL Server 仍然允许它。Linq to SQL 不会,因为它会尝试将该 XML 实际加载到XElement. 如果您在列中使用此值运行查询,您将得到完全相同的错误,根级别的数据无效

为了修复此错误,您需要修复数据库中存在的格式错误的 XML。

于 2010-03-20T23:46:19.793 回答
0

创建有 [tab1] 但您的选择有 [tab1s]

于 2010-03-10T14:19:24.530 回答