0

Entity Framework は現在、SSDL で定義されているテーブル値関数とカスタム関数をサポートしていますが、句で条件として使用されている例は見つかりませんwhere

例:

var query = this.db.People;
query = query.Where(p => FullText.ContainsInName(p.Id, "George"));

この例では、クエリの句でContainsInName実行したいカスタム関数です。where

サポートされていますか?

4

2 に答える 2

0

そのような機能はサポートされません。つまり、p.Id送信した文字列内に があるかどうかを確認しようとしているだけの場合は、次のようにすることができます。

query.Where(p => "George".Contains(p.Id));

orString.Containsを使用して比較することに注意してください。が の場合、これを行うことができます。stringcharp.Idint

query.Where(p => "George".Contains(p.Id.ToString()));

これにより、データベース レベルでクエリが実行されます。

于 2012-10-15T21:39:19.353 に答える
0
  1. スキーマの名前空間を見つけます。XML エディターで .edmx を開くと、上部に次のようなものが表示されます。

    `<Schema Namespace="My.Project.Name.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2008" xmlns:store="http://schemas...
    
  2. 関数をスキーマにインポートします。

  3. 静的関数を使用して静的クラスを作成する

    public static class FullText
    {
        [EdmFunction("My.Project.Name.Store", "ContainsInName")]
        public static bool ContainsInName(int Id, string Name)
        {
            throw new NotImplementedException("You can only call this method as part of a LINQ expression");
        }
    }
    

次に、例のように使用します:)

where句でのテーブル値関数の使用については不明です。

于 2012-10-16T03:44:10.350 に答える