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元数据中,您可以看到Includeusing 表达式需要System.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 回答