2010-04-28 39 views
1

所以,我正在查看使用DB4o的ASP.NET MVC2(http://mvcstarter.codeplex.com/)的TekPub示例,並且有一堆模板來創建控制器等,生成的代碼如下所示:處理ID與db4o和ASP.NET MVC2

public ActionResult Details(int id) 
    { 
     var item = _session.Single<Account>(x=>x.ID == id); 
     return View(item); 
    } 

現在,我的理解是,使用db4o的或不需要的ID的一個simliar對象數據庫,因此如何/究竟是什麼我通過使這種模板化代碼的功能?

更新:兩個答案都很有用,我修改了模板以使用GUID作爲ID。一旦我看到它是如何工作的,我會在這裏添加任何相關的代碼/註釋。

更新:所以,我做了什麼(工作正是我所期望的)是 1.我的模型添加ID即

public Guid ID { get; set; } 
  • 初始化在類的構造函數中的Guid像這樣

    ID = Guid.NewGuid();

  • 就是這樣,所有的工作。

    回答

    0

    在MVCStarter你所描述的方法居然是:

    public ActionResult Details(string id) 
    { 
    var item = _session.Single<Account>(x=>x.ID == id); 
    return View(item); 
    } 
    

    和ID是一個GUID的字符串表示。

    就我所知,db4o不會自動生成一個int ID ......它不知道最後一個是什麼。所以在對象上使用Guid並在構造函數上設置。

    +0

    我現在看到 - 挖掘一點,添加控制器模板使用int,我只需要把它弄亂,使它更多DB4o-ised – 2010-04-28 19:54:58

    0

    這取決於。

    Db4o通過其內存中的object identity跟蹤和識別對象。數據庫中的同一個對象始終由內存中的同一個對象表示。例如,在簡單的桌面應用程序中,您不需要對象標識。

    現在,一旦對象序列化或必須跨Web請求識別圖片,圖片就會更改。當對象被序列化並且再次反序列化時,它具有另一個對象標識。所以db4o不再識別它。網絡請求也是如此。所以在這種情況下,有必要爲對象引入一個id。有不同的id的可能性,看到這些SO-問題:link db4o, Linq and UUIDsDb4o MvcApplication

    在你的情況上面的Accound類帶來了自己的id字段。然而,如何產生這個ID我不能告訴從該片段。

    +0

    謝謝,這是有道理的。在這種情況下,ID尚未創建(還) – 2010-04-28 19:56:06