【问题标题】:Linq to entities does not recognize my entity typesLinq to entity 无法识别我的实体类型
【发布时间】:2011-04-30 20:53:54
【问题描述】:

从头开始创建实体模型时遇到问题。我成功地设计了我的对象并生成了数据库创建。但是当我尝试发出类似 linq 的请求时

var t = from e in entity.UsersSet
        where e.Id == 1
        select e;

似乎我的“e”变量未被识别为用户对象,而我的 UsersSet 属性属于 ObjectSet 类型。 如果我停止在“e.Id”处输入表达式,我会收到来自 VS 的警告,告诉我:

参数类型“lambda 表达式”不可分配给参数类型“字符串”

我真的不明白为什么它会给我这个错误。我检查了另一个项目,它工作正常。也许我错过了参考或其他什么...有什么想法吗?

【问题讨论】:

  • 你有没有为你的变量尝试过另一个名字..
  • UsersSet 是如何声明的? Id 是如何声明的?
  • 全部由实体引擎生成。我刚刚使用集成在 Visual Studio 中的设计器设计了这些类。是的,我尝试了另一个名字,它似乎没有改变任何东西

标签: c# .net linq linq-to-entities


【解决方案1】:

这有点晚了,但我只是用谷歌搜索了这个确切的问题(并在此结束)。

我发现上述解决方案确实修复了它,但也可以通过添加“使用 System.Linq;”来修复它到顶部解决了这个问题。

【讨论】:

    【解决方案2】:

    如果您确定 UsersSet 是某种User 实例的集合,那么您可以尝试

    var t = from User e in entity.UsersSet
            where e.Id == 1
            select e;
    

    【讨论】:

    • 问题被标记为 linq 到实体 - 如果UsersSet 确实是一个实体,你的答案不会改变任何东西,因为它已经是强类型的,如果不是,即使你尝试它也不会工作投 - 总而言之:我不知道这会有什么帮助。
    • @BrokenGlass 如果 UsersSet 它是一个非泛型集合,则 e 将是 object 类型,并且必须明确说明其中元素的类型。
    • 哇...问题解决了。它是如此愚蠢......事实上,我只是错过了一个 System.Linq 使用那个 VS 并没有提醒我。当我尝试强输入引用时,我有幸找到了问题所在。因此,我将您的答案标记为已接受,因为它对我有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多