我是LINQ的新手,我正在尝试将Linq to SQL表绑定到几个控件(treeview,textbox等)。我希望能够更改文本框字段并轻松地将这些更新保存回数据库。
我可以使用以下方法从数据库中获取数据:
Private LinqDB As New DataContext(My.Settings.dbConnection)
Property tblManufacturers As Table(Of dbManufacturers) _
= LinqDB.GetTable(Of dbManufacturers)()
将内容绑定到控件非常简单。 TreeView填充了所有的ManufacturerNames,当我点击它时,它会填充TextBoxes进行编辑 问题是结果不符合我想要的树视图中的顺序 我希望有类似的东西:
Property tblManufacturers As Table(Of dbManufacturers) _
= LinqDB.GetTable(Of dbManufacturers)().OrderBy("ManufacturerName")
会起作用,但是没有。
我知道我可以使用像
这样的东西Dim ManufacturerQuery = From ManufacturerName In tblManufacturers Order By ManufacturerName
但是将更改推回到数据库似乎更加困难。
编辑:所以,显然我需要停止懦弱,只是尝试一下......
Namespace Controls
Public Class ManufacturerWarranty
Private LinqDB As New DataContext(My.Settings.dbConnection)
Property tblManufacturers As Table(Of dbManufacturers) = LinqDB.GetTable(Of dbManufacturers)()
Property ManufacturerQuery = From m In tblManufacturers Order By m.ManufacturerName
Public Sub New()
InitializeComponent()
End Sub
Private Sub ManufacturerWarranty_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded
Me.DataContext = Me
End Sub
Private Sub TreeView1_MouseDoubleClick(sender As System.Object, e As System.Windows.Input.MouseButtonEventArgs) Handles TreeView1.MouseDoubleClick
StackPanel1.DataContext = e.OriginalSource.DataContext
End Sub
Private Sub cmdSave_Click(sender As Object, e As System.Windows.RoutedEventArgs) Handles cmdSave.Click
LinqDB.SubmitChanges()
End Sub
End Class
End Namespace
然后我将TreeView绑定到ManufacturerQuery而不是tblManufacturers。我的保存按钮仍可用于提交更改,即使它们是针对ManufacturerQuery而非tblManufacturers。
答案 0 :(得分:1)
好的,也许你想要
Dim tblManufacturers As Table(Of dbManufacturers) _
= LinqDB.GetTable(Of dbManufacturers)() _
.OrderBy(Function(m) m.ManufacturerName)
所以,承诺你做
Using linqDB As New DataContext(My.Settings.dbConnection)
Dim tblManufacturers As Table(Of dbManufacturers) _
= linqDB.GetTable(Of dbManufacturers)()
-- change tblManufacturers.
linqDB.SaveChanges()
End Using
我不会做的是在用户与GUI交互时保持上下文打开。同样地,除非我将数据显示给用户,否则我(可能)不会对数据进行排序。