首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用fluent Nhibernate with bit脱水属性值时出错

使用fluent Nhibernate with bit脱水属性值时出错
EN

Stack Overflow用户
提问于 2013-04-11 01:15:58
回答 2查看 4.3K关注 0票数 2

我有这样一门课:

代码语言:javascript
复制
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; }
}

和人员数据映射:

代码语言:javascript
复制
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();
        }
    }

这是表模式:

代码语言:javascript
复制
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时,我们遇到了这个问题:

代码语言:javascript
复制
error dehydrating property value for `NameSpaceA.IsValid`

和内部异常:

代码语言:javascript
复制
_innerException = {"Invalid index 2 for this SqlParameterCollection with Count=2."}
EN

回答 2

Stack Overflow用户

发布于 2013-04-12 00:09:26

正如Jamie Ide所说,尝试显式地映射由identity生成的Id,但也要检查并查看从IsValid映射中删除.Not.Nullable()是否允许它工作。因为在c#中,类型是boolean,所以无论如何都不能为空。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-04-11 05:11:35

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

我大胆猜测,根本原因是您没有为ID属性声明生成器。它被类型化为long的事实也可能是一个问题。如何生成/设置ID属性?

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

代码语言:javascript
复制
Id(x => x.ID).GeneratedBy.Identity();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15932312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档