C# StateServer中的MongoRepository实体
我有一个MVC项目,其中有一个C# StateServer中的MongoRepository实体,c#,mongodb,mongodb-.net-driver,mongorepository,C#,Mongodb,Mongodb .net Driver,Mongorepository,我有一个MVC项目,其中有一个用户类,标记为[Serializable] 此用户类继承自文档中说明的“实体”类 但是,当我试图通过StateServer将User类的实例保存到会话时,我得到一个错误,即该对象不可序列化 我是MongoDB和MongoRepository的新手,所以我不确定是否可以在这里做些什么来使用户类的实例可序列化 示例代码: [Serializable] public class SiteUser : Entity { public string username {
用户
类,标记为[Serializable]
此用户
类继承自文档中说明的“实体
”类
但是,当我试图通过StateServer将User
类的实例保存到会话时,我得到一个错误,即该对象不可序列化
我是MongoDB和MongoRepository的新手,所以我不确定是否可以在这里做些什么来使用户类的实例可序列化
示例代码:
[Serializable]
public class SiteUser : Entity
{
public string username { get; set; }
}
public ActionResult Index()
{
MongoRepository<SiteUser> userRepo = new MongoRepository<SiteUser>();
SiteUser user = userRepo.First(m => m.username == "myusername");
Session["MyUser"] = user; // This won't work due to the "Entity" link.
return View();
}
[可序列化]
公共类SiteUser:实体
{
公共字符串用户名{get;set;}
}
公共行动结果索引()
{
MongoRepository userRepo=新的MongoRepository();
SiteUser=userRepo.First(m=>m.username==“myusername”);
会话[“MyUser”]=user;//由于“实体”链接,此操作将无法工作。
返回视图();
}
实现接口Entity
,而不是继承自实体
,因此不依赖实体基类
[Serializable]
public class SiteUser : IEntity
{
public string Id { get; set; }
public string username { get; set; }
}
另外,由于1.5.1的
实体
类是。为什么不存储用户名并缓存SiteUser
实例呢?基类不可序列化。
所有类都必须具有属性。Rob,感谢您的回复。这是我必须做的事情,但您的示例需要在Id属性上方有此属性:[BsonRepresentation(BsonType.ObjectId)]“但您的示例需要在Id属性上方有此属性…”:正如我所写的:“不,它不需要”,您的代码/项目需要它,但定义并不要求它,这正是您所暗示的;-)Id不必是ObjectId。它可以是任何东西,从GUID到ISO3166代码,再到电话号码、电子邮件地址,任何能让你的船漂浮的东西。这就是为什么人性首先存在的原因;-)