相关疑难解决方法(0)

为长文本字符串覆盖流畅的NHibernate nvarchar(MAX)不是nvarchar(255)

当你在流畅的NHibernate中设置字符串值时,它会将数据库值设置为Nvarchar(255),我需要存储相当多的基于用户输入的长字符串,而255是不切实际的.

只是为了添加这个是自动播放器的问题,因为我使用流畅的NHibernate来构建数据库.

c# nhibernate fluent-nhibernate automapping sharp-architecture

40
推荐指数
3
解决办法
2万
查看次数

N-Hibernate与Oracle中的长字符串会导致错误

我使用oracle作为db和流利的Nhibernate进行映射.

下面是我的对象类

 public class UserFieldEvent
    {
        public virtual int Id { get; set; }
        public virtual UserFieldBase UserField { get; set; }
        public virtual EventType EventType { get; set; }
        public virtual string EventScript { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

EventScript的属性长度可以是0到4000.在数据库中,我将EventScript的列类型设置为CLOB.

下面是我的映射类:

public UserFieldEventMap()
        {
            Table("TBLDS_USERFIELDEVENT");
            Id(x => x.Id).GeneratedBy.Sequence("SEQDS_USERFIELDEVENT");
            Map(x => x.EventType).CustomType<EventType>();
            Map(x =>  x.EventScript).CustomSqlType("CLOB");
            References(x => x.UserField).Column("USERFIELDBASEID");
        }
Run Code Online (Sandbox Code Playgroud)

现在,只要EventScript的长度大于2000,我就会收到错误"ORA-01461:只能插入一个LONG值才能插入LONG列." 同时将对象保存到数据库中.任何人都可以帮助这个.

c# oracle nhibernate fluent-nhibernate

4
推荐指数
1
解决办法
2271
查看次数

为什么Fluent NHibernate会将C#String属性中的Text字段始终创建为DEFAULT?

我在这里运行这个示例:https://github.com/jagregory/fluent-nhibernate/blob/master/src/Examples.FirstProject/Program.cs

String类型的所有C#属性都映射到TEXT sql字段而不是

nvarchar OR varchar,除了它作为DEFAULT设置.

我怎么能改变呢?

我知道我可以这样做:

Map(x => x.Name).CustomSqlType("nvarchar").Length(50); // does not work !!!
Map(x => x.Name).CustomSqlType("nvarchar (50)"); // does work !!!
Run Code Online (Sandbox Code Playgroud)

但我不想改变每个领域......

更新:...因此我可以通过=>进行自定义约定

我要做的是编写一个自定义的公约类,如:

public class ColumnStringToNVarCharConvention : IPropertyConvention, IPropertyConventionAcceptance
    {
        public void Apply(IPropertyInstance instance)
        {
            instance.CustomSqlType("nvarchar");
        }

        public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
        {
            criteria.Expect(x => x.Property.GetType().Equals(typeof(string)));
        }
    }
Run Code Online (Sandbox Code Playgroud)

有人可以正确上述代码吗?我测试了它,它没有用,为什么...

convention sqlite string text fluent-nhibernate

2
推荐指数
1
解决办法
1268
查看次数