存储过程不使用LINQ执行

时间:2008-12-15 03:06:00

标签: asp.net vb.net linq

这个问题让我很生气。

我定义了几个表,CRUD存储了这些表的proc。我已使用dbml映射器将存储的proc连接到Visual Studio中的表。

除一张桌子外,一切正常。我没有为我的历史记录表点击插入存储过程。

dbml映射器中表的insert属性是:

usp_HistoryInsert (ByRef historyID As System.Int32, changeRequestID As System.Int32, statusID As System.Int32, userID As System.Int32, emailSent As System.Boolean, historyDate As System.DateTime, remarks As System.String, statusChanged As System.Boolean)

我试图使用以下代码点击它:

    ' create new history entry
    h1.ChangeRequestID = ChangeID
    h1.UserID = Session("UserID")
    h1.HistoryDate = DateTime.Now
    h1.StatusChanged = ActionID
    h1.Remarks = RichTextEditor1.Text
    h1.EmailSent = True
    h1.StatusID = ActionID

    db.Histories.InsertOnSubmit(h1)
    db.SubmitChanges()

使用分析器,我可以看到存储过程未被命中。我在数据库中重命名了存储过程(试图生成异常),只是为了仔细检查。

如果我尝试手动点击存储过程(如下所示),它可以正常工作!

db.usp_HistoryInsert(0, h1.ChangeRequestID, h1.StatusID, h1.UserID, h1.EmailSent, h1.HistoryDate, h1.Remarks, h1.StatusChanged)

之前有没有人遇到过这个问题?

修复!见下面的答案。有人可以关闭这个吗?

2 个答案:

答案 0 :(得分:2)

好的,这是令人难以置信的但是......应用程序已经有了一个名为history.aspx的页面。 VB默认为该页面的历史类,而不是LinQ使用的db.History类。

一旦我重命名为history.aspx,一切正常! :)

答案 1 :(得分:0)

您是否手动将sproc连接到.dbml文件中的表?如果在属性网格中选择表a,则可能会看到“插入”行为。如果它显示,使用运行时,则不会调用SPROC并且您已从使用运行时更改该设置,以手动配置它以在插入时调用SPROC。