2

ジェネレーターを介してエンティティを生成し、DbContextそれをエンティティ コンテキスト モデルを使用する API コントローラーに追加しました。ただし、次のメソッドはコンパイルに失敗します。

public IEnumerable<casino> Getcasinos()
    {
        var casinos = db.casinos.Include(c => c.city).Include(c => c.state);
        return casinos.AsEnumerable();
    }

コンパイラは次のように述べています。

Cannot Convert Lambda Expression to Type 'String' Because It Is Not A Delegate Type

なぜこれを言っているのですか?System.Linq名前空間をインポートしました。

4

1 に答える 1

8

これは実際にObjectQuery(T).Includeメソッドが原因で発生します。これには関数シグネチャがあります。

public ObjectQuery<T> Include(string path);

これが表示される理由は、おそらく、呼び出している場所でSystem.Data.Entity名前空間が利用できないためです。メタデータから、式を使用するには名前空間が必要であるDbExtensionsことがわかります。IncludeSystem.Data.Entity

namespace System.Data.Entity
{
    [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "Casing is intentional")]
    public static class DbExtensions
    {
        public static IQueryable<T> Include<T, TProperty>(this IQueryable<T> source, Expression<Func<T, TProperty>> path) where T : class;
        public static IQueryable<T> Include<T>(this IQueryable<T> source, string path) where T : class;
        public static IQueryable Include(this IQueryable source, string path);
    }
}

System.Data.Entity名前空間を含めると、エラーが解決されます。

于 2012-07-18T00:45:13.267 に答える