2010-10-05 47 views
4

「不」使用我有一個EntityDataSource其中在命令文本包含不在時收到錯誤在命令文本

的查詢是這樣的: - 。

SELECT User.LastName, User.Suffix 
FROM [User] 
WHERE [User].UserId not in (select [Contractors].UserId from Contractors) 

這將導致以下錯誤: -

The element type 'Edm.Guid' and the CollectionType 'Transient.collection[Transient.rowtype[(UserId ,Edm.Guid(Nullable=True,DefaultValue=))](Nullable=True,DefaultValue=)]' are not compatible. The IN expression only supports entity, primitive, and reference types. 

任何想法如何解決這個問題?

回答

2

這是因爲您不能使用帶Guid(唯一標識符)類型的IN clausule。你的UserId是唯一的標識符類型,所以用另一種方法來檢查沒有IN的情況,比如臨時表等。

嘗試用左表連接,研究更多關於SQL的知識,這裏是一個例子:

SELECT User.LastName, User.Suffix 
FROM [User] 
Left Join [Contractors] on [User].UserId = [Contractors].UserId 
WHERE [Contractors].UserId IS NULL 

我不確定這是否會奏效,我現在無法測試。 我確信有更好的方式來做我正在做的事情,但那是你遇到的錯誤....

+0

你能指導我如何解決這個問題,因爲我找不到方法做這個。 – 2010-10-05 12:46:08