Nhibernate 获取错误:";无法执行查询";使用会话。删除

Nhibernate 获取错误:";无法执行查询";使用会话。删除,nhibernate,Nhibernate,获取错误:“无法使用session.Delete执行查询” 当我复制查询并在SQLServerManagementStudio中运行它时,select查询将毫无问题地运行。似乎问题出在删除或其他方面。。。我使用相同的方法从其他表中删除记录,似乎效果很好 你知道这是什么原因吗 班级: public class MultisitePublicBooking { public virtual int Id { get; set; } public vir

获取错误:“无法使用session.Delete执行查询”

当我复制查询并在SQLServerManagementStudio中运行它时,select查询将毫无问题地运行。似乎问题出在删除或其他方面。。。我使用相同的方法从其他表中删除记录,似乎效果很好

你知道这是什么原因吗

班级:

    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");