2011-09-10 209 views
0

我需要更改默认FluentNHibernate自动映射假定下一个类数据类型覆盖FluentNHibernate自动映射

public class plaparte 
{ 
public virtual int id { get; private set; } 
public virtual int vivos { get; set; } 
public virtual int lesionados { get; set; } 
public virtual int quemados { get; set; } 
public virtual int muertos { get; set; } 
public virtual int otros { get; set; } 
public virtual string colaboracion { get; set; } 
public virtual decimal hectareas { get; set; } 
public virtual string reconocimiento { get; set; } 
public virtual string disposiciones { get; set; } 
public virtual plaserv plaserv { get; set; } 
} 
} 

我需要为这个类只有字符串类型的数据库 被转换成文本,如果我通过

改变
public virtual string[] reconocimiento { get; set; } 

FluentNHibernate需要BLOB数据类型

我可以这样做?

public class plaparteMappingOverride : IAutoMappingOverride<plaparte> 
{ 
public void Override(AutoMapping<plaparte> mapping) 
{ 
    Map(x => x.disposiciones).CustomSqlTypeIs("TEXT"); 
} 
} 

回答

1

为了解决我使用的问题:

using System.ComponentModel.DataAnnotations; 
... 
public class plaparte 
{ 
... 
[StringLength(4000)] 
public virtual string disposiciones { get; set; } 

创建文本字段

[更新]

对于工作,我需要创建下一类

class StringLengthConvention : AttributePropertyConvention<StringLengthAttribute> 
{ 
    protected override void Apply(StringLengthAttribute attribute, IPropertyInstance instance) 
    { 
     instance.Length(attribute.MaximumLength); 
    } 
} 

也是ne添加会议惯例Fluent automap Like

static AutoPersistenceModel CreateAutomappings() 
    { 
     return AutoMap.AssemblyOf<plaparte>(new mapAutomapConfiguration()) 
      .Conventions.Setup(c => 
      { 
       c.Add<StringLengthConvention>(); 
      }); 
    }