Linq-to-SQL数据库更新失败

时间:2010-08-18 20:37:39

标签: vb.net linq-to-sql

非常简单的更新。它只是失败,没有错误,没有对数据库进行任何更改。

Dim db As New BarClassesDataContext
Dim foo = (From a In db.articles Where a.id = 14 Select a).Single
Response.Write("<h3>" & foo.title & "</h3>")
foo.title = "This is my new, updated title for article ID #14"
db.SubmitChanges()

这是我文章课的相关部分。此外,这是一个Web表单,所以我没有控制台。有没有其他方法可以查看T-SQL输出?

<Table(Name:="dbo.article")>  _
Partial Public Class article

    Private _id As Integer
    Private _issueid As Integer
    Private _dateadded As Date
    Private _title As String
    Private _titlelink As String
    Private _description As String
    Private _image As String
    Private _imagelink As String
    Private _type As Integer

    Public Sub New()
        MyBase.New
    End Sub

    <Column(Storage:="_id", AutoSync:=AutoSync.Always, DbType:="Int NOT NULL IDENTITY", IsDbGenerated:=true)>  _
    Public Property id() As Integer
        Get
            Return Me._id
        End Get
        Set
            If ((Me._id = value)  _
                        = false) Then
                Me._id = value
            End If
        End Set
    End Property

3 个答案:

答案 0 :(得分:1)

如果您有任何无效的字段定义,则可能会遇到问题,其中0 = 1被添加到WHERE子句中。检查是否已设置所有非可空字段。 (我在观看SQL分析器的同时为此争取了大约两个小时,为 no 原因添加额外的0 = 1。)

(如果我可以在connect.microsoft.com上找到问题,我也会发布它)

答案 1 :(得分:0)

乍一看,我会说一个(但不是主要的)问题是'='。我认为它必须是:

Dim foo = (From a In db.articles Where a.id == 14 Select a).Single

我看到的主要问题是缺少UpdatetOnSubmit()语句。 L2S如何知道您想要进行更新?

尝试

db.Articles.UpdateOnSubmit(foo);
db.SubmitChanges(); 

或接近此事。

答案 2 :(得分:0)

我怀疑您在数据库和/或System.Data.Linq.Mapping属性中没有正确定义的主键。向我们展示Article课程 - 这可能是您的问题所在。确保数据库中有一个IDENTITY字段,并确保你的linqed up类在<Column>属性中有IsPrimaryKey:= True和IsDbGenerated:= True。

此外,在DataContext上设置.Log属性以查看正在执行的SQL是明智的。我喜欢调试窗口记录器技术,我在此之前已经提到过:DataContext SubmitChanges in LINQ