数据库
首页 > 数据库> > NHibernate 3使用过时的语法指定sql数据类型

NHibernate 3使用过时的语法指定sql数据类型

作者:互联网

我正在尝试使用新的Loquacious API将具有字符串属性的实体映射到NHibernate 3中的varchar列,但是我不知道如何指定要使用的Type.我能够使用NHibernate 2和FluentNHibernate正确映射实体.

NHibernate 2 w / Fluent映射

public class EntityMapping : ClassMap<Entity>
{
    public EntityMapping()
    {
        Table("EntityTable");
        Id(x => x.EntityId).Column("EntityId").GeneratedBy.Identity();
        Map(x=>x.Code).Not.Nullable().Column("EntityCode").CustomType("AnsiString");

    }
}

NHibernate 3 w / lovolcious API

 public Action<IClassMapper<Entity>> CreateMapping()
    {
        return ca =>
        {
            ca.Table("Entity");
            ca.Id(x => x.EntityId, map =>
            {
                map.Column("EntityId");
                map.Generator(Generators.Identity);
            });
            ca.Property(x => x.Code, map =>
            {
                map.Column(cm => {
                    cm.Name("EnityCode"); 

                    cm.NotNullable(true);
                }); 

            });
        };

如何/在何处指定“ AnsiString”(因此在构造SQL时,对代码的查询被参数化为“ varchar”而不是“ nvarchar”)?

我正在使用Sql Server 2008.

解决方法:

ca.Property(x => x.Code, map =>
{
    map.Type(NHibernateUtil.AnsiString);
    map.Column(/*etc.*/); 
});

标签:nhibernate,nhibernate-mapping,nhibernate-3,sql-server-2008,c
来源: https://codeday.me/bug/20191102/1989650.html