【问题标题】:Error dehydrating property value with fluent Nhibernate with bit使用流利的 Nhibernate 与位脱水属性值时出错
【发布时间】:2013-04-10 17:15:57
【问题描述】:

我有这门课:

public class Person
{
   public virtual long     ID            { get; set; }
   public virtual string   FirstName     { get; set; }
   public virtual string   LastName      { get; set; }
   public virtual boolean  IsValid       { get; set; }
}

和人物数据映射:

public class PersonMap : ClassMap<Person>
    {
        public PersonMap()
        {
            Id(x => x.ID);
            Map(x => x.FirstName).Not.Nullable().Length(100);
            Map(x => x.LastName).Not.Nullable().Length(100);
            Map(x => x.IsValid).Not.Nullable();
        }
    }

这是表架构:

CREATE TABLE [dbo].[Person](
    [ID] [bigint] IDENTITY(1,1) NOT NULL,
    [FirstName] [nvarchar](100) NOT NULL,
    [LastName] [nvarchar](100) NOT NULL,    
    [IsValid ] [bit] NOT NULL,
PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

当我使用 Fluent NHibernate 在数据库中插入一个新的Person 时,我们遇到了这个问题:

error dehydrating property value for `NameSpaceA.IsValid`

还有内部异常:

_innerException = {"Invalid index 2 for this SqlParameterCollection with Count=2."}

【问题讨论】:

  • 你能把这个类映射到的表贴出来吗?

标签: c# nhibernate fluent-nhibernate fluent-nhibernate-mapping


【解决方案1】:

正如 Jamie Ide 所说,尝试显式映射由身份生成的 Id,但还要检查并查看从 IsValid 映射中删除 .Not.Nullable() 是否允许它工作。由于在 c# 中类型是布尔值,所以它永远不能为空。

public PersonMap()
{
    Id(x => x.ID).GeneratedBy.Identity();
    Map(x => x.FirstName).Not.Nullable().Length(100);
    Map(x => x.LastName).Not.Nullable().Length(100);
    Map(x => x.IsValid);
}

【讨论】:

    【解决方案2】:

    请提供完整的错误消息和堆栈跟踪。这是一条错误消息,通常会产生误导,因为在此错误之前发生了其他错误。

    我会冒险猜测根本原因是您没有为 ID 属性声明生成器。它的类型很长这一事实也可能是一个问题。您如何生成/设置 ID 属性?

    假设您使用的是标识列 (int),则映射为:

    Id(x => x.ID).GeneratedBy.Identity();
    

    【讨论】:

    • “无效索引”错误消息通常(总是?)由重复映射引起。仔细检查您的映射,以确保您没有多次映射列。
    猜你喜欢
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    相关资源
    最近更新 更多