Nhibernate 获取错误:";无法执行查询";使用会话。删除
获取错误:“无法使用session.Delete执行查询” 当我复制查询并在SQLServerManagementStudio中运行它时,select查询将毫无问题地运行。似乎问题出在删除或其他方面。。。我使用相同的方法从其他表中删除记录,似乎效果很好 你知道这是什么原因吗 班级:Nhibernate 获取错误:";无法执行查询";使用会话。删除,nhibernate,Nhibernate,获取错误:“无法使用session.Delete执行查询” 当我复制查询并在SQLServerManagementStudio中运行它时,select查询将毫无问题地运行。似乎问题出在删除或其他方面。。。我使用相同的方法从其他表中删除记录,似乎效果很好 你知道这是什么原因吗 班级: public class MultisitePublicBooking { public virtual int Id { get; set; } public vir
public class MultisitePublicBooking
{
public virtual int Id { get; set; }
public virtual int multisiteID { get; set; }
public virtual DateTime startDate { get; set; }
public virtual DateTime startTime { get; set; }
}
public MultisitePublicBookingMap()
{
Table("tblMultisitePublicBooking");
Id(x => x.Id).Column("PublicBookingID");
Map(x => x.multisiteID).Column("MultisiteID");
Map(x => x.startDate).Column("StartDate");
Map(x => x.startTime).Column("StartTime");
}
附表如下:
CREATE TABLE [dbo].[tblMultisitePublicBooking](
[PublicBookingID] [int] IDENTITY(1,1) NOT NULL,
[MultisiteID] [int] NULL,
[NumAttendees] [int] NULL,
[AttendeeName] [varchar](1024) NULL,
[AttendeePhone] [varchar](128) NULL,
[AtendeeEmail] [varchar](500) NULL,
[BookingPrice] [money] NULL,
[LID] [int] NULL,
[TimeZoneID] [int] NULL,
[DateTimeModified] [datetime] NULL,
[DateTimeCreated] AS (getdate()),
[CurrentStep] [nvarchar](50) NULL,
[CallType] [nvarchar](8) NULL,
[CallSpeed] [nvarchar](10) NULL,
[StartDate] [date] NULL,
[StartTime] [time](7) NULL,
[endtime] [time](7) NULL,
[Duration] [time](7) NULL,
[Catering] [nvarchar](200) NULL,
[Equipment] [nvarchar](200) NULL,
[Telepresence] [bit] NULL,
[telepresenceConfigOption] [nvarchar](50) NULL,
[Sync] [bit] NULL,
[ReceiveOrDial] [varchar](50) NULL,
[NoteTXT] [text] NULL,
CONSTRAINT [PK_tblMultisitePublicBooking] PRIMARY KEY CLUSTERED
(
[PublicBookingID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
完整的错误消息是:
无法执行查询
[选择multisitep0.PublicBookingID为PublicBo1\u 18\u,multisitep0.MultisiteID为Multisite2\u 18\u,multisitep0.NumAttendees为Numatent3\u 18\u,multisitep0\u。与会者姓名为Attende4\u 18\u,multisitep0\u。与会者电话为Attendee 5\u 18\u,multisitep0.AtendeeEmail为AtendeeE6\u 18\u,multisitep0\u。预订价格为BookingP7\u 18\u,multisitep0.LID为LID18\u 18\u,mmultisitep0.DateTime修改为DateTime9.18,multisitep0.CurrentStep为Current10.18,multisitep0.CallType为CallType18,multisitep0.CallSpeed为CallSpeed18,multisitep0.StartDate为StartDate18,multisitep0.StartTime为StartTime18,multisitep0ce作为Telepre17\u 18\u,multisitep0\u。Telepresence配置选项作为telepre18\u,multisitep0\u。同步作为Sync18\u,multisitep0\u。ReceiveOrDial作为Receive20\u 18\u,multisitep0\u.NoteTXT作为NoteTXT18\u来自TBLMultilisitePublicBooking multisitep0\u其中multisitep0\u.MultisiteID=101156]
[SQL:选择multisitep0.PublicBookingID为PublicBo1\u 18\u,multisitep0.MultisiteID为Multisite2\u 18\u,multisitep0.NumAttendees为NumAtten3\u 18\u,multisitep0.Attendee名称为Attende4\u 18\u,multisitep0.Attendee电话为Attende5\u 18\u,multisitep0.AtendeeEmail为AtendeeE6\u 18\u,multisitep0.BookingPrice为BookingPrice为BookingP7\u 18\u 18\u,multisitep0_,multisitep0\u.datetime修改为datetime 9\u 18\u,multisitep0\u.CurrentStep为Current10\u 18\u,multisitep0\u.CallType为CallType18\u,multisitep0\u.CallSpeed为CallSpeed18\u,multisitep0\u.StartDate为StartDate 18\u,multisitep0\u.StartTime为StartTime18\u,multisitep0\u.Catering为Catering 18\u,multisitep0显示为Telepre17_18_,多站点P0_。Telepresence配置选项为telepre18_,多站点P0_。同步为Sync18_,多站点P0_。接收为Receive20_18_,多站点P0_。notetTXT为NoteTXT18_,来自TBL多站点公共预订多站点P0。其中多站点ID=101156]
内部例外是:
{"Input string '20:00:00' was not in the correct format."}
{"Unable to cast object of type 'System.TimeSpan' to type 'System.IConvertible'."}
你说得对,问题在于sql server时间列映射。你可以在这里阅读更多内容: xml文件中的映射如下所示:
<property name="StartTime" type="TimeAsTimeSpan" />
从TimeSpan到SQL“time”数据类型的映射似乎存在一些问题 您可以通过如下设置startTime属性映射来修复它:
Map(x => x.startTime).CustomType("TimeAsTimeSpan");
一旦映射设置正确,您也可以删除指定的记录。那么错误消息的继续部分和任何InnerException的内容是什么?@Oskarbergren出于某种原因,我没有想检查一下,我已经用完整消息和InnerException更新了上面的内容。当然,这似乎是一条线索……没有w、 …数据库字段的类型为“time”,其中nHibernate对象字段的类型为DateTime,这似乎就是问题所在。
Map(x => x.startTime).CustomType("TimeAsTimeSpan");