2010-02-26 24 views
3

我創建了一個表像LINQ to SQL的錯誤「的數據在根級別無效」爲空的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查詢來獲取數據它拋出一個錯誤「根級數據無效linq「。在進一步的調查中,我發現在這種情況下元列是空的。實際上,它是可空的的我是否必須刪除可空對象,並將空白根節點設置爲默認值,或者有其他方法來擺脫錯誤。


會拋出錯誤

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

你能否提供Linq查詢? – 2010-03-03 16:23:19

回答

2

在任何情況下,您將收到此錯誤,如果一個企業的價值XML列是NULL

但是,如果該字段包含格式不正確的XML,您將會收到此錯誤,如錯誤所示。

SQL Server允許你這樣做:

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

顯然字符串 「嗒嗒」 是無效的XML,但SQL Server仍然允許它。 Linq to SQL不會,因爲它會嘗試將該XML加載到XElement中。如果在該列中使用此值運行查詢,則會得到完全相同的錯誤,根級別的數據無效

爲了解決此錯誤,您需要修復數據庫中存在的格式錯誤的XML。

+0

Thx Aaonaught,我得到了我的答案 – 2010-03-24 04:41:12

0

的創建我的LINQ查詢[TAB1]但你的選擇有[tab1s]

相關問題