我有这门课:
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."}
最佳答案
正如 Jamie Ide 所说,尝试显式映射由身份生成的 Id,但还要检查并查看从 IsValid 映射中删除 .Not.Nullable() 是否允许其工作。由于在 C# 中,类型是 bool 值,因此无论如何都不能为 null。
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);
}
关于c# - 使用流畅的 Nhibernate 位对属性值进行脱水时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15932312/