Linq to sql error“根级别的数据无效”可以为空的xml列

我创建了一个像这样的表
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 query来获取数据时,它会抛出一个错误“根级别的数据是无效的linq”。在进一步调查中,我发现在这种情况下meta列为null。实际上它是可空的我是否必须删除可空并将一些空白根节点设置为默认值,或者有另一种方法来消除错误。 我的linq查询引发错误
     var obj1= (from obj in dbContext.tab1s
  where obj.id== 123
select obj).FirstOrDefault<Tab1>();
    
已邀请:
如果XML列的值为
NULL
,则在任何情况下都不会收到此错误。 但是,如果字段包含格式错误的XML,您将收到此错误,如错误所示。 SQL Server允许您执行此操作:
UPDATE tab1
SET Meta = 'blah'
WHERE id = 123
显然字符串“blah”是无效的XML,但SQL Server仍然允许它。 Linq to SQL没有,因为它会尝试将该XML实际加载到
XElement
。如果在列中使用此值运行查询,则会得到完全相同的错误,根级别的数据无效。 为了解决此错误,您需要修复数据库中存在的格式错误的XML。     
创建有[tab1],但您的选择有[tab1s]     

要回复问题请先登录注册