Fluent NHibernate将IList 映射为单列的值

我有这堂课:

public class MyEntity { public virtual int Id { get; set; } public virtual IList Vectors { get; set; } } 

如何将Fluent NHibernate中的Vectors映射到单个列(作为值)? 我在想这个:

 public class Vectors : ISerializable { public IList Vectors { get; set; } /* Here goes ISerializable implementation */ } public class MyEntity { public virtual int Id { get; set; } public virtual Vectors Vectors { get; set; } } 

是否有可能像这样映射Vectors ,希望Fluent NHibernate将Vectors类初始化为标准的ISerializable?

或者我如何将IList映射到单个列? 我想我必须自己编写序列化/反序列化例程,这不是问题,我只需要告诉FNH使用这些例程。

我想我应该使用IUserTypeIUserType ,但我不知道如何实现它们,以及如何告诉FNH合作。

找到答案。 🙂

标题为UserTypeConvention
http://wiki.fluentnhibernate.org/Available_conventions
用于自定义类型转换。

这是为了实现自定义类型转换器:
http://intellect.dk/post/Implementing-custom-types-in-nHibernate.aspx

我发现的其他相关链接:
http://www.lostechies.com/blogs/rhouston/archive/2008/03/23/mapping-strings-to-booleans-using-nhibernate-s-iusertype.aspx
http://www.martinwilley.com/net/code/nhibernate/usertype.html
http://geekswithblogs.net/opiesblog/archive/2006/08/13/87880.aspx
http://kozmic.pl/archive/2009/10/12/mapping-different-types-with-nhibernate-iusertype.aspx
http://blogs.msdn.com/howard_dierking/archive/2007/04/23/nhibernate-custom-mapping-types.aspx

UserTypeConvention用法:
http://jagregory.com/writings/fluent-nhibernate-auto-mapping-type-conventions/

最后一个链接中最重要的代码是:

 public class ReplenishmentDayTypeConvention : ITypeConvention { public bool CanHandle(Type type) { return type == typeof(ReplenishmentDay); } public void AlterMap(IProperty propertyMapping) { propertyMapping .CustomTypeIs() .TheColumnNameIs("RepOn"); } } 

其中ReplenishmentDayUserTypeIUserType派生类, ReplenishmentDay是类,应该使用您的用户类型转换器进行转换。

还有这个:

 autoMappings .WithConvention(convention => { convention.AddTypeConvention(new ReplenishmentDayTypeConvention()); // other conventions });