1

如果我有以下的(削減爲簡潔起見)如何存儲序列化列表<int>在FluentNhibernate

public class TempCartMap : ClassMap<TempCart> 
{ 
    Id(x => x.Id).GeneratedBy.Identity(); 
    Map(x => x.Products); // < This one 
} 

[Serializable] 
public class TempCart { 

    public TempCart(){ 
    Products = new List<int>(); 
    } 

    public virtual IList<int> Products { get; set; } 

} 

我看了(http://www.philliphaydon.com/2012/06/using-nhibernate-with-servicestack/)和(http://www.philliphaydon.com/2012/03/ormlite-blobbing-done-with-nhibernate-and-serialized-json/),但有一個更短,更簡單,讓NHibernate獲得序列化更快的方法&如上所述反序列化一列。 似乎矯枉過正,以創建一個新的IUserType類等等等等

回答

1

您也可以將產品列表存儲爲一個單獨的表:

public class TempCartMap : ClassMap<TempCart> 
{ 
    Id(x => x.Id).GeneratedBy.Identity(); 

    HasMany(x => x.Products) 
     .Element("product_number") 
     .KeyColumn("temp_cart_id") 
     .Table("temp_cart_products") 
    ; 
} 

只是爲了澄清的問題:是有一個原因,這是不通緝?

+0

剛剛編碼,基於http://stackoverflow.com/questions/877924/fluent-nhibernate-bind-listint(我把修改在該職位,因爲它說AsElement不是元素)序列化位仍然興趣tbh,但你的權利,它「應」映射罰款到另一個表,但目前拋出「沒有persister:System.Int32」 – 2012-07-09 13:10:16

+0

我遇到的主要問題是關於Persisence規格測試(http:// stackoverflow .com/questions/11397669/nhibernate-mappingexception-no-persister-for-system-int32)原來這不適用於這種綁定。愚蠢的時間浪費錯誤的一天:)寫了一個不同的測試,並離開持續規格測試的列。 – 2012-07-09 21:40:23