无法使用接口确定 i => i.Id 的序列化信息

2024-02-28

首先,我知道这个错误消息已经存在问题,但我还没有找到任何与使用此类查询的接口相关的问题。

我目前正在尝试使用 C# 驱动程序 2.0 更新 MongoDB 实体。但是,当我尝试构建查询时出现错误(我假设它是Builders<T>.Filter.Eq(i => i.Id, entity.Id)一些代码),我收到以下错误:

无法确定 i => i.Id 的序列化信息。

我正在尝试更新以下课​​程

public interface IEntity {
    string Id { get; set; }
}

public interface ITrack : IEntity {
    string Name { get; set; }
}

public class TrackDTO : ITrack
{

    [BsonId]
    public string Id { get; set; }

    public string Name { get; set; }

}

然后,我使用通用 DAO 类中的以下方法使用该接口将对象保存到数据库中,以替换整个文档。请注意,在下面的示例中,T 编码为ITrack (i.e. TrackDao = new Dao<ITrack>)但是当对象在运行时传入时,它是一个TrackDTO对象(这是正确的):

public async Task<T> Save(T entity)
{
    // Save the entity to the collection.
    ReplaceOneResult result = await _collection.ReplaceOneAsync(Builders<T>.Filter.Eq(i => i.Id, entity.Id), entity, new UpdateOptions() { IsUpsert = true });

    // return the saved user object.
    return entity;
}

我不知道我的 Id 属性是否IEntity类还需要[BsonId]属性,但如果可能的话我想避免这种情况,因为我想保留我的模型层(其中IEntity驻留),没有任何数据库平台特定的引用。

我还尝试添加以下类映射,但也没有效果:

BsonClassMap.RegisterClassMap<TrackDTO>(cm =>
{
    cm.AutoMap();
    cm.MapMember(c => c.Id).SetSerializer(new StringSerializer(BsonType.ObjectId));
    cm.SetIdMember(cm.GetMemberMap(c => c.Id));
});

出于同样的原因,没有[BsonId]模型层中的属性,我不想用以下内容装饰模型类[BsonKnownTypes]引用 DTO 对象,但是我不介意这是否需要作为类映射的一部分发生。


  1. For

“无法确定 i => i.Id 的序列化信息。”

尝试使用:nameof().

Builders<T>.Filter.Eq(nameof(IEntity.Id), entity.Id)

2.

...但如果可能的话我想避免这种情况,因为我想保留我的模型 层(IEntity 所在的位置)不受任何特定于数据库平台的影响 参考。

我对像你这样的问题和类似问题的解决方案:

public interface IEntity {
    [BsonId]
    string Id { get; set; }

    string IdEntity { get; set; }
}

[BsonIgnoreExtraElements(Inherited = true)]
public abstract class BaseEntity : IEntity 
{
    [BsonRepresentation(BsonType.ObjectId)]
    public virtual string Id { get; set; }

    [BsonIgnoreIfNull]
    public string IdEntity { get; set; }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用接口确定 i => i.Id 的序列化信息 的相关文章

  • 无法将匿名方法转换为类型“System.Windows.Threading.DispatcherPriority”,因为它不是委托类型

    谁能解释我需要做什么才能克服这个错误 无法将匿名方法转换为类型 System Windows Threading DispatcherPriority 因为它不是委托类型 private void Test object sender ba
  • 到底什么是“位填充”或“填充位”?

    我只是在互联网上找不到任何关于 位填充 真正含义的详细解释 并且在 Stack Overflow 上也没有找到与位填充相关的线程的任何答案 我还搜索了 ISO 9899 1990 其中提到了 位填充 但没有根据我的需要进行解释 我在网上找到
  • 除了第一列之外,Gridview 行可点击?

    我使用以下代码使 gridview 的整行可单击 protected void gridMSDS RowDataBound object sender GridViewRowEventArgs e if e Row RowType Data
  • Ruby 解释器嵌入到 C 代码中

    我只是尝试书中的一个简单例子 我有一个 sum rb 文件 class Summer def sum max raise Invalid maximum max if max lt 0 max max max 2 end end 还有一个
  • 根据另一个列表的内容对列表进行排序

    我有一个包含整数列表的列表和另一个包含同时包含整数和字符串的类的列表 我想做的是按字母顺序对列表进行排序 将第一个列表中存在的条目放在前面 这是我的代码和预期输出 using System using System Collections
  • 将 Visual Studio 2012 C++ 单元测试项目链接到 exe 会导致访问冲突

    我从现有的整体 exe 本机 Visual Studio 2012 项目开始 我想添加一个本机单元测试项目 根据http msdn microsoft com en us library hh419385 aspx objectRef ht
  • 如何在 asp .net mvc 2 中对不直接属于我的模型的对象使用 DisplayFor()?

    我确信我在这里遗漏了一些非常简单的东西 我创建了一个自定义日期时间显示模板 使用以下方法时效果很好 但是 我遇到了这样的情况 在部分控件内 我在 for 循环中迭代模型中的对象 我想要一个 DateTime 属性来使用显示模板 但我不知道如
  • 是否有更好(更简单)的方法来获取特定域 SID?

    我被指派修改 WinForms 应用程序 主要检查登录用户是否属于特定域 这是我到目前为止所想出的 byte domainSid var directoryContext new DirectoryContext DirectoryCont
  • 使用 microsoft word.interop 删除 Word 文档中的空白页

    我创建了一个Word文档 它使用以下命令生成动态内容词互操作 它有一些分页符之间使用 我面临的问题是 此分页符会创建我不想向用户显示的空白页面 在某些情况下 我需要在那里添加这些分页符以维护页面布局 因此我无法考虑删除这些分页符 但我想要的
  • 如何解决素数函数的大O表示法?

    我正在尝试理解 Big O 表示法 很抱歉 如果我问的问题太明显了 但我似乎无法理解这一点 我有以下 C 代码函数 我正在尝试为其计算 Big O 表示法 for i 2 i lt 100 i for j 2 j lt i j j if i
  • tcmalloc/jemalloc 和内存池之间有什么区别(以及选择的理由)?

    tcmalloc jemalloc是改进的内存分配器 还引入了内存池以更好地分配内存 那么它们之间有什么区别以及在我的应用中如何选择它们呢 这取决于您的程序的要求 如果您的程序有更多的动态内存分配 那么您 需要从可用的分配器中选择一个内存分
  • C#中如何将委托转换为对象?

    我正在使用反射类来调用其他 dll 上的一些方法 方法的参数之一是委托类型 我想通过使用反射来调用这个方法 所以我需要将函数参数作为对象数组传递 但我找不到任何关于 如何将委托转换为对象 提前致谢 委托是一个对象 只需像平常一样创建预期的委
  • C++ 静态工厂构造函数

    我正在进行模拟 它需要创建多个相当相似的模型 我的想法是有一个名为 Model 的类并使用静态工厂方法来构造模型 例如 模型 createTriangle or 模型 createFromFile 我从以前的 java 代码中汲取了这个想法
  • std::regex 转义正则表达式中使用的特殊字符

    我是字符串来创建一个std regex FILE 作为单元测试的一部分 检查一些打印文件名的异常输出 在 Windows 上失败并显示 regex error error escape 表达式包含无效的转义字符或尾随转义 因为 FILE 宏
  • 第一个随机数始终小于其余随机数

    我碰巧注意到 在 C 中 使用 std rand 方法调用的第一个随机数大多数时候都明显小于第二个随机数 关于 Qt 实现 第一个几乎总是小几个数量级 qsrand QTime currentTime msec qDebug lt lt q
  • 更改预处理到文件后出现错误 1 ​​错误 LNK1104

    我必须使用预处理器 所以我改变了 配置属性 gt C gt 预处理器 gt 预处理为文件 gt 是 并得到错误 错误 1 错误 LNK1104 无法打开文件 Debug asnreal obj 这个问题的解决办法 我必须在 lib 文件的路
  • TypeScript 中 C# 类虚拟成员的等效项

    因此 在 C 中 当我创建模型类和延迟加载内容时 我会执行以下操作 public int User ID get set public int Dept ID get set 然后在我的班级稍远一点的地方 我像这样弹出我的虚拟 public
  • Android NDK - 仅用 C/C++ 编写

    有没有一种可能的方法可以使用 C C 编写整个 NDK 应用程序 而无需像 hello jni 示例项目 HelloJni java 中那样的 Java 入门 类 以某种方式创建一个 HelloJni c 来执行相同的操作 从 Androi
  • 任何浮点密集型代码是否会在任何基于 x86 的架构中产生位精确的结果?

    我想知道使用浮点运算的 C 或 C 代码是否会在任何基于 x86 的体系结构中产生位精确的结果 无论代码的复杂性如何 据我所知 自 Intel 8087 以来的任何 x86 架构都使用准备处理 IEEE 754 浮点数的 FPU 单元 并且
  • 从哪里开始阅读 SQLite 源代码? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想了解sqlite是如何实现的 并且 想阅读源代码 我已经下载了源代码 我应该开始查看代码的哪一部分 SQLite文档页 http

随机推荐

  • 如何在 android 或 ios 移动设备上运行 Nodejs 运行时

    我正在尝试使用 Ionic Framework 为 iOS android 开发一款 chrome cast 应用程序 为此我在应用程序中需要很少的 NodeJS 包 它可以在我的桌面上运行 但我不确定它将如何在没有可用的 Node 运行时
  • Heroku Rails Rake 任务同步生产和本地数据库

    我正在尝试创建一个 rake 任务 以便我只需键入 rake db sync 即可更新我的本地数据库以匹配生产 该解决方案利用 Heroku 团队提供的代码 使用 PG 备份导入和导出 Heroku Postgres 数据库 https d
  • 查找包含集合中所有值的最短连续子数组的算法

    我有以下问题需要解决 给定一组整数 例如 1 3 2 以及随机整数数组 例如 1 2 2 5 4 0 1 1 2 2 0 3 3 找到包含集合中所有值的最短连续子数组 如果找不到子数组 则返回空数组 Result 1 2 2 0 3 Or
  • 获取Android上所有应用程序的运行时间

    嗨 我正在开发一个应用程序 我必须在其中获取running time设备上安装的所有应用程序 那么 是否可以知道别人的应用程序在手机上运行了多长时间呢 例如 gmail 应用程序在手机上运行了多长时间 有没有API为此 或者我们必须开发自己
  • 为什么 JMX 报告的 JVM 堆使用最大值会随时间变化?

    我的一个 hadoop 集群的名称节点上的 JVM 堆最大值配置为 8GB 当我使用 JMX 监控 JVM 时 报告的最大值不断波动 如附图所示 http highlycaffeinated com assets images heapma
  • Python 可以识别交互运行的文件的更改吗?

    我正在做一些故障排除 我很好奇是否可以交互地运行 Python 脚本 更改脚本中定义的函数 保存文件 然后让交互式 shell 识别更改 这是我目前正在做的一个例子 my script py def dummy func print Som
  • 使用 @parameters 的 T-SQL 动态分组

    我想实现 SELECT param1 param2 param3 t field1 sum t amount FROM table t WHERE t field 2 IS NOT NULL AND t field3ID 12345 GRO
  • scipy PchipInterpolator 实现问题

    我正在尝试基于链接实现 PchipInterpolator http docs scipy org doc scipy 0 14 0 reference generated scipy interpolate PchipInterpolat
  • pdf.js 与本地 pdf 文件

    我正在尝试 pdf js 库 只想在我的服务器上显示本地 pdf 文件 而不是示例提供的 pdf 文件
  • 带有构建优化器的 AOT 和 JIT

    我正在关注解决方案here https github com Alekcei AotAndJit使用的JitCompilerFactory加载运行时编译器和自定义装饰器以保留组件和模块元数据 但是有了 Angular cli build o
  • golang中如何通过引用传递结构体类型的接口?

    我需要通过引用传递结构类型的接口 如下所示 由于我不能使用接口指针来构造类型变量 我应该如何更改以下代码来修改te价值10 package main import fmt func another te interface te check
  • 获取使用 Chart.js 渲染的折线图 y 轴的最大值

    我使用 Chart js 渲染分散折线图 效果非常好 对于渲染算法 我需要找出 y 轴上显示的最高值 因此假设数据集中的 最大 点为 y 248 因此 y 轴显示 250 作为最大值 我需要知道它是250 我尝试在运行时检查图表对象 如下所
  • Material UI 主题覆盖:如何全局覆盖子样式?

    我正在构建一个应用程序材质UI库 https material ui com 对于 ReactJS 使用主题覆盖 API https material ui com customization overrides global theme
  • MongoDB C# 2.0 超时异常

    我们最近将 Web 应用程序升级到 MongoDB C Driver 2 0 并部署到生产环境 在一定负载以下 应用程序运行良好 一旦生产服务器上的负载超过一定限制 应用程序的CPU立即降至0 大约30秒后 该异常会被记录多次 System
  • 轮播图像未填充 bootstrap 3 中的宽度

    我对这种响应式的东西太陌生了 我正在尝试使用新 bootstrap 3 中的轮播 但由于某种原因 图像没有填充轮播的宽度 所有图像的尺寸完全相同 1000x395 无论我做什么 它都不会完全填满 非常感谢任何和所有的帮助 这是我正在使用的代
  • 获取当前的 jQuery 选择器字符串?

    调用自定义插件时 如何获取当前选择器字符串 my selector p my plugin 想要输出my selector p在我的脚本中 我怎样才能访问这个字符串 您可以使用selector https api jquery com se
  • Kubernetes客户子域动态绑定

    我有以下用例 我们的客户经常在其 K8s 集群上发布新服务 这些新服务可以通过负载平衡和 Ingress 从外部访问 以便在部署服务后动态配置此负载平衡 这对于我们客户的开发团队来说非常容易 因为他们不必等到有人手动配置负载平衡 他们只需在
  • 点之间的角度?

    我有一个三角形 A B C 我试图找到每对三个点之间的角度 问题是我可以在网上找到的算法是用于确定向量之间的角度 使用向量 我可以计算从 0 0 到我所拥有的点的向量之间的角度 但这并不能给出三角形内的角度 好的 这是在维基百科页面上的方法
  • 使用 Python 在文件行中搜索列表条目

    我有一个包含数万行 ASCII 文本的文本文件 我有一个包含数百个要搜索的关键字的列表 单独考虑每一行 最初 如果有任何匹配项 我想返回 打印到屏幕或文件 该行 但最终我想根据匹配数对返回的行进行排名或排序 所以 我的清单是这样的 keyw
  • 无法使用接口确定 i => i.Id 的序列化信息

    首先 我知道这个错误消息已经存在问题 但我还没有找到任何与使用此类查询的接口相关的问题 我目前正在尝试使用 C 驱动程序 2 0 更新 MongoDB 实体 但是 当我尝试构建查询时出现错误 我假设它是Builders