我有一个类,它有一个我想在db中加密存储的密码属性。该属性是一个字符串类型,我有一个自定义类型EncryptedStringType,我希望NHibernate用它来映射到数据库。这是我的相关自动化代码:
var mappings = AutoMap.AssemblyOf<Business>()
.Where(x=>x.IsSubclassOf(typeof(EntityBase)))
.IgnoreBase(typeof(EntityBase))
.Conventions.Add
(
ConventionBuilder.Id.Always(x =>
x.GeneratedBy.HiLo(HILO_TABLE, HILO_COLUMN, HILO_MAX_LO)),
ConventionBuilder.HasMany.Always(x => x.Cascade.AllDeleteOrphan()),
Table.Is(o => Inflector.Pluralize(o.EntityType.Name)),
PrimaryKey.Name.Is(o => "Id"),
ForeignKey.EndsWith("Id"),
DefaultLazy.Always(),
DefaultCascade.All()
);
我无法弄清楚覆盖Business类的UserPassword属性的类型的语法。我以为我应该可以做一些事情,比如:
mappings.Override<Business>(map=> /* Not sure what to do here */);
感谢任何帮助。
答案 0 :(得分:1)
您始终可以创建映射覆盖类。任何仍然可以应用的约定都是,但您基本上可以指定映射类似于覆盖默认约定的ClassMap。
使用对mappings.Override()的调用,它看起来像:
mappings.Override<Business>(map=>map.Map(x=>x.UserPassword).CustomType(typeof(EncryptedStringType)));
答案 1 :(得分:0)
自己找到答案。
mappings.Override<Business>(map =>
{
map.Map(x => x.UserPassword).CustomType<EncryptedStringType>();
});