2017-12-07 20 views
1

私はこれを数時間にわたって解決するために運がないと考えていました。LINQ to SQL - '選択'が見つかりません

私は非常に単純なシナリオを持っている - 残念ながら、私もするので最後に.ToList()を置くことができない - SEARCHhashは、ストアドプロシージャではどこでLINQからSQLへ

var qry = (from row 
    in DBConnect.SEARCHhash("test", "1234") 
    select row); 

に次のようにしようとしていますIntelliSenseに次のエラーが表示されます

ソースタイプ 'void'のクエリパターンの実装が見つかりませんでした。 「選択」が見つかりません。

他のすべてのストアドプロシージャは正常に動作しますが、この1つでは動作しません。

それから私は、私はデザイナーにストアドプロシージャをドラッグ&ドロップしたとき、私は、次のストアドプロシージャの戻り値の型が検出されなかった次のような警告

を得たことを覚えておいてください。プロパティウィンドウで、ストアドプロシージャごとに戻り値の型を設定します。

enter image description here

だから、私は、プロパティを開いて、ドロップダウンをクリックし、唯一の選択肢は、そう

int型

enter image description here選択int型(int32型)であった。しかし、今、私は次の取得を開始しましたエラー

クエリパターンの実装が見つかりませんでしたソースタイプ 'int'。[選択]

次は私がまた私のストアドプロシージャを比較し始め、私はこのストアドプロシージャはそれでJOINを持っていることに気づいたと、もちろん、それは `使用しているデザイナー

[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.SEARCHhash")] 
     public int SEARCHhash([global::System.Data.Linq.Mapping.ParameterAttribute(Name="Keywords", DbType="VarChar(540)")] string keywords, [global::System.Data.Linq.Mapping.ParameterAttribute(Name="UserId", DbType="NVarChar(128)")] string userId) 
     { 
      IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), keywords, userId); 
      return ((int)(result.ReturnValue)); 
     } 

からのコードですが見つかりませんFREETEXT」ここ

は私のストアドプロシージャのコードです:

SELECT 
    [dbo].[SEARCHMLinksData].PageID, 
    [dbo].[SEARCHMLinksData].PageTitle, 
    [dbo].[SEARCHMLinksData].PageDescription, 
    [dbo].[SEARCHMLinksData].PageType 
FROM 
    [dbo].[SEARCHMLinksData] 
LEFT JOIN 
    [dbo].[SEARCHMLinksTags] ON [SEARCHMLinksData].PageID = [SEARCHMLinksTags].PageID 
WHERE 
    (FREETEXT([SEARCHMLinksData].*, @Keywords) OR 
    FREETEXT([SEARCHMLinksTags].*,@Keywords)) 
    AND 
    ([SEARCHMLinksData].UserID = @UserId OR [SEARCHMLinksTags].[user_id] = @UserId) 

任意のアイデアや時間誰もがそれがあるソリューション

を探している場合ELPはまた

乾杯

を理解されるであろう、私は念のため、以下の https://www.mssqltips.com/sqlservertip/1542/using-stored-procedures-with-linq-to-sql/ The return types for the following stored procedures could not be detected Could not find an implementation of the query pattern for source type 'System.Data.Entity.DbSet'

+0

csファイルに 'import System.Linq;'が追加されているのが見えますか? – Nitesh

+0

こんにちは、はい 'using System.Linq; using System.Xml.Linq; using System.Data.Linq; ' – aliusman

答えて

0

など、たくさんのことを試してみましたLINQでFREETEXTを使用することはできません。それがのストアドプロシージャを作成した理由です私が見つけた解決策は、関数を作成し、関数を呼び出す

にあったが、(私はなぜ知らない)のいずれか何らかの理由でストアドプロシージャを使用することができませんでしたように私の場合、それはそうです代わりに

を使用しての - LINQ

を使用すると、それは私のために私はそれにもかかわらず機能にしなければならなかった今

一つの作品

(FREETEXT([SEARCHMLinksData].*,@Keywords) 

私は

(FREETEXT([SEARCHMLinksData].Title,[SEARCHMLinksData].Description,@Keywords) 

手段を使用していた、それはワイルドカード

なぜ、このすべてを取らなかったとして彼らの[名前]でインデックスさばかりのすべての列を一覧表示しますか?私は分かりませんが、それは私が見つけることができる唯一の解決策です。

これは誰かを助けることを望みます。

関連する問題