Asp.net mvc 2 使用db4o和ASP.NET MVC2处理ID

Asp.net mvc 2 使用db4o和ASP.NET MVC2处理ID,asp.net-mvc-2,db4o,Asp.net Mvc 2,Db4o,因此,我正在查看使用DB4o的ASP.NET MVC2的TekPub示例,其中有一组模板用于创建控制器等,生成的代码如下所示: public ActionResult Details(int id) { var item = _session.Single<Account>(x=>x.ID == id); return View(item); } 在类构造函数中初始化Guid,如下所示 ID=Guid.NewGuid 就

因此,我正在查看使用DB4o的ASP.NET MVC2的TekPub示例,其中有一组模板用于创建控制器等,生成的代码如下所示:

    public ActionResult Details(int id)
    {
        var item = _session.Single<Account>(x=>x.ID == id);
        return View(item);
    }
在类构造函数中初始化Guid,如下所示

ID=Guid.NewGuid

就这样,一切正常。

视情况而定

Db4o通过对象在内存中的位置来跟踪和标识对象。数据库中的同一对象始终由内存中的同一对象表示。例如,在简单的桌面应用程序中,您不需要对象id

现在,一旦对象被序列化或必须跨web请求识别,情况就会发生变化。当对象再次序列化和反序列化时,它具有另一个对象标识。所以db4o不再识别它了。web请求也是如此。因此,在这种情况下,有必要为对象引入一个id。id有不同的可能性,请看这些问题:和


在上面的例子中,Accound类带来了它自己的id字段。但是,这个id是如何生成的,我无法从这个片段中分辨出来。

在MVCStarter中,您描述的方法实际上是:

public ActionResult Details(string id)
{
var item = _session.Single<Account>(x=>x.ID == id);
return View(item);
}
id是Guid的字符串表示形式


据我所知,db4o不会自动生成int-ID……它不知道最后一个是什么。因此,在对象上使用Guid,并在构造函数上设置Guid。

我现在明白了-有点挖掘,添加控制器模板使用int,我只需要将其弄乱,使其更具DB4o IsedHanks,这是有意义的。在这种情况下,尚未创建ID
public ActionResult Details(string id)
{
var item = _session.Single<Account>(x=>x.ID == id);
return View(item);
}