无法使用类型为“System.Data.Entity.Core.Objects.ObjectQuery”的实例进行调用

2023-12-06

我想通过 userId 查找用户名

这个代码片段工作

Discussion_CreateBy = db.AspNetUsers.Find(discussion.CreatedBy).UserName,

这一次在以下控制器类中不起作用

Comment_CreateBy = db.AspNetUsers.Find(c.CreatedBy).UserName,

这是我的模型课程

public class DiscussionVM
{
    public int Disussion_ID { get; set; }
    public string Discussion_Title { get; set; }
    public string Discussion_Description { get; set; }
    public Nullable<System.DateTime> Discussion_CreateDate { get; set; }
    public string Discussion_CreateBy { get; set; }

    public string Comment_User { get; set; }

    public IEnumerable<CommentVM> Comments { get; set; }

}

public class CommentVM
{

    public int Comment_ID { get; set; }
    public Nullable<System.DateTime> Comment_CreateDate { get; set; }
    public string Comment_CreateBy { get; set; }
    public string Comment_Description { get; set; }

}

这是整个控制器类

    public ActionResult Discussion_Preview()
    {
        int Discussion_ID = 1;

        var discussion = db.AB_Discussion.Where(d => d.Discussion_ID == Discussion_ID).FirstOrDefault();
        var comments = db.AB_DiscussionComments.Where(c => c.Discussion_ID == Discussion_ID);



        DiscussionVM model = new DiscussionVM()
        {

            Disussion_ID = discussion.Discussion_ID,
            Discussion_Title = discussion.Discussion_Name,
            Discussion_Description = discussion.Discussion_Name,
            Discussion_CreateBy = db.AspNetUsers.Find(discussion.CreatedBy).UserName,
            Discussion_CreateDate = discussion.CreatedDate,

            Comments = comments.Select(c => new CommentVM()

            {
                Comment_ID = c.Comment_ID,
                Comment_Description = c.Comment_Discription,
                Comment_CreateBy = db.AspNetUsers.Find(c.CreatedBy).UserName,                    
                Comment_CreateDate = c.CreatedDate

            })

        };



        return View(model);
    }

出现以下错误

在类型“System.Data.Entity.DbSet”上声明的方法“Project.Models.AspNetUser Find(System.Object[])”1[Project.Models.AspNetUser]' cannot be called with instance of type 'System.Data.Entity.Core.Objects.ObjectQuery1[项目.模型.AspNetUser]'


Discussion_CreateBy = db.AspNetUsers.Find(discussion.CreatedBy).UserName

之所以有效,是因为讨论是内存中的对象,因为您正在通过调用执行查询FirstOrDefault on it:

var discussion = db.AB_Discussion.Where(d => d.Discussion_ID == Discussion_ID).FirstOrDefault();

另一方面,在以下声明中:

db.AspNetUsers.Find(c.CreatedBy).UserName

c尚未查询,因为

db.AB_DiscussionComments.Where(c => c.Discussion_ID == Discussion_ID)

返回一个IQueriable而不是实际的评论集合

解决这个问题的最简单方法是将您的所有评论放入内存中(因为无论如何您都需要它们):

var comments = db.AB_DiscussionComments.Where(c => c.Discussion_ID == Discussion_ID).ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用类型为“System.Data.Entity.Core.Objects.ObjectQuery”的实例进行调用 的相关文章

  • 持久身份验证令牌过期

    我有一个使用表单身份验证的 ASP NET MVC 应用程序 这是我创建身份验证令牌的代码行 FormsAuthentication SetAuthCookie username true 我的 web config 包含
  • 将多种类型存储为 C++ 字典中的值?

    我想编写一个行为几乎等同于 Python 字典的 C 对象 C 的std map and std unordered map容纳了 Python 字典已有的一些功能 但缺乏最重要的功能之一 即能够添加任意对象和类型 即使不可能 您离实现 P
  • 当 edmx 文件位于单独的项目中时出错

    我有问题说 在配置中找不到指定的命名连接 或者不打算与EntityClient提供者 或无效 我的 edmx 文件位于单独的项目中 但该项目的连接字符串app config 什么可能导致问题 确保 app config 位于设置为启动项目的
  • 在 C 中读取字符时打印

    我正在尝试编写一个简单的小代码片段来响应箭头键按下 我知道 up 由 A 表示 并且我有以下代码来检查该序列 while 1 input char fgetc stdin if input char EOF input char n bre
  • 从列表中获取数组而不进行堆分配

    我有一个列表 我想将其数组分配给一个属性 public void BuildMesh List
  • 通过 Microsoft Graph 从 Azure AD 获取组中的用户

    我正在通过 Microsoft Graph 从 AzureAD 请求用户列表 我取回了 User 对象 但它们的 MemberOf 属性始终为 null 我认为我可以使用 Expand 来专门请求该属性 虽然它不会导致错误 但它也不会填充该
  • 通过 WCF 提供类对象的数组或列表

    任何提供自定义类对象列表或数组的 WCF 客户端服务器示例都会对我有所帮助 但这是我到目前为止所得到的 这是我想提供的班级系统 namespace NEN Server FS Serializable public class XFS pr
  • 为什么Java不支持C中的clrscr这样的函数?

    我有一个问题 对很多人来说可能听起来很愚蠢 但我不能停下来把它发布在这里 因为在互联网上找不到任何东西 为什么java没有我们在C中使用的clrscr之类的函数 如果我创建了一个基于用户输入反复迭代的 java 控制台应用程序 然后如果我想
  • WPF 通知获取属性的 PropertyChanged

    我有INotifyPropertyChanged实施使用CallerMemberName public event PropertyChangedEventHandler PropertyChanged protected virtual
  • Serilog 与 Autofac

    我有一个记录器包装器 我想使用以下配置将 serilog 注入其中 var logger new LoggerConfiguration WriteTo RollingFile AppDomain CurrentDomain GetData
  • 无法将 User32.dll 导入 Visual Studio

    I tried To add 用户32 dll from 参考管理器 并将其导入自Windows System32 user32 dll I got 错误信息 无法添加对 C Windows System32 user32 dll 的引用
  • 图像的 EMGU/OpenCV FFT 未产生预期结果

    我正在尝试使用 EMGU 可视化图像的 FFT 这是我正在处理的图像 这是预期的结果 Here s what I get 这是我的代码 Image
  • Tulpep PopupNotifier 无法与计时器一起使用

    using System using System Data SQLite using System Drawing using System Timers using System Windows Forms using Tulpep N
  • Lambda 通过引用捕获右值引用

    下面的代码标准正确吗 godbolt https godbolt org z VE0NWz IE by ref 捕获表示临时的转发引用 并从函数返回结果 lambda 按值 在同一个表达式中 当然 存储 lambda 供以后使用会使其包含悬
  • 为什么转发引用与右值引用具有相同的语法?

    我刚刚对这些 相当 新的功能做了一些研究 我想知道为什么 C 委员会决定为它们引入相同的语法 看来开发人员不必要浪费一些时间来理解它是如何工作的 而一种解决方案可以让我们思考进一步的问题 就我而言 它是从问题开始的 可以简化为 includ
  • 使用 DI 将参数传递给 DbContext

    我想向 DBContext 传递一个附加参数 如下所示 string myParam xx string con connenctionstring services AddDbContext
  • C++中main函数可以调用自身吗?

    谁能告诉我下面的代码有什么问题吗 int main return main 我测试了一下 编译正确 它永远运行 幕后还有什么阴谋吗 TLDR 呼叫main导致未定义的行为 标准中使用的术语以及对程序员和编译器的影响似乎存在混淆 首先 单独的
  • 迭代非增量枚举

    在你问之前 我已经looked https stackoverflow com questions 261963 c iterate through an enum and looked https stackoverflow com qu
  • C++ 中的无符号双精度?

    为什么 C 不支持无符号双精度语法 因为典型的浮点格式不支持无符号数 例如 参见此 IEEE 754 格式列表 http en wikipedia org wiki IEEE 754 2008 Formats 添加通用硬件不支持的数字格式只
  • 在 C++ 中,将 float 转换为 double 再转换回 float 是否给出相同的值

    假设在下面的代码中 float f1 double d1 static cast

随机推荐