C# StateServer中的MongoRepository实体

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 {

我有一个MVC项目,其中有一个
用户
类,标记为
[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代码,再到电话号码、电子邮件地址,任何能让你的船漂浮的东西。这就是为什么人性首先存在的原因;-)