NHibernate 3 определяет тип данных SQL с болтливым синтаксисом - PullRequest
3 голосов
/ 14 сентября 2011

Я пытаюсь сопоставить сущность со строковым свойством столбцу varchar в NHibernate 3 с помощью нового Loquacious API, но не могу понять, как указать тип для использования.Я могу правильно сопоставить объект с помощью NHibernate 2 и FluentNHibernate.

NHibernate 2 с Fluent Mapping

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 с прозрачным 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» (таким образом, запросы к коду параметризуются как «varchar» вместо «nvarchar» при создании SQL)?

Я использую Sql Server 2008.

Ответы [ 2 ]

4 голосов
/ 14 сентября 2011
ca.Property(x => x.Code, map =>
{
    map.Type(NHibernateUtil.AnsiString);
    map.Column(/*etc.*/); 
});
0 голосов
/ 12 января 2014

Ответом на сам вопрос («указать тип sql») будет определение свойства следующим образом:

ca.Property(x => x.Code, map =>
        {
            map.Column(cm => {
                cm.Name("EnityCode"); 
                cm.NotNullable(true);
                cm.SqlType("varchar");
            }); 
        });

Непосредственное указание типа SQL следует рассматривать как хак, который здесь не нужен,хоть.Желательно использовать решение map.Type(NHibernateUtil.AnsiString);, чтобы NHibernate выводил тип SQL.

...