当前位置: 首页 > 编程语言 > C#

MongoDBID序列化的最佳模式分享

时间:2023-04-11 02:18:43 C#

MongoDBC#:ID序列化的最佳模式我有一个User类,我需要在Web服务中使用它们。那么问题是,如果我尝试序列化BsonObjectIdId类型,我看到它有一个null属性,有一个null属性等等......我按顺序写了这个解决方法,它是一个很好的解决方案吗?publicpartialclassi_User{[BsonId(IdGenerator=typeof(BsonObjectIdGenerator))][NonSerialized]publicBsonObjectId_id;publicStringId{get{returnthis._id.ToString();}}}这样我可以传递_Id保持为BsonObjectId但我通过web在属性Id中发送字符串表示。另一种解决方案是使用StringObjectIdGeneratorpublicpartialclassi_User{[BsonId(IdGenerator=typeof(StringObjectIdGenerator))]publicStringid;但看到MongoDB会将字符串存储到数据库而不是ObjectId。在Web服务和/或客户端服务器(Flash+C#)等序列化环境中工作的最佳方式是什么?如果我理解正确的话,您想以字符串形式访问Id属性,但将Id保存为MongoDB中的ObjectId。这可以使用BsonRepresentation的BsonId来完成。[BsonId][BsonRepresentation(BsonType.ObjectId)]publicstringId{get;放;}详细信息可以在这里找到。如果你想用类映射来做-这是这样做的方法:BsonClassMap.RegisterClassMap(cm=>{cm.AutoMap();cm.SetIdMember(cm.GetMemberMap(x=>x.Id).SetIdGenerator(StringObjectIdGenerator.Instance));});还有一种使用约定的更通用的方法。此方法允许您在一个地方为所有模型设置规则。第一的。为ID生成器添加约定如果(idMemberMap==null||idMemberMap.IdGenerator!=null){返回;}idMemberMap。SetIdGenerator(StringObjectIdGenerator.Instance);}}第二。注册我们的会议。必须在第一次查询之前调用Register方法。以上就是C#学习教程的全部内容:MongoDBC#:ID序列化最佳模式分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——varconventionPack=newConventionPack{newIdGeneratorConvention()};ConventionRegistry.Register("Pack",conventionPack,x=>true);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢