非常简单的更新。它只是失败,没有错误,没有对数据库进行任何更改。
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
答案 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