Repository navigation
Expand file tree
/
Copy pathMainViewModel.vb
More file actions
74 lines (71 loc) · 3.08 KB
/
Copy pathMainViewModel.vb
File metadata and controls
74 lines (71 loc) · 3.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Imports DevExpress.Mvvm
Imports EntityFrameworkIssues.Issues
Imports DevExpress.Mvvm.DataAnnotations
Imports System
Imports System.Linq.Expressions
Imports DevExpress.Data.Filtering
Imports DevExpress.Xpf.Data
Imports System.Linq
Imports System.Threading.Tasks
Imports System.Data.Entity
Imports DevExpress.Mvvm.Xpf
Imports System.Collections
Public Class MainViewModel
Inherits ViewModelBase
Private Function MakeFilterExpression(ByVal filter As CriteriaOperator) As Expression(Of Func(Of Issue, Boolean))
Dim converter = New GridFilterCriteriaToExpressionConverter(Of Issue)()
Return converter.Convert(filter)
End Function
<Command>
Public Sub FetchRows(ByVal args As FetchRowsAsyncArgs)
args.Result = Task.Run(Of FetchRowsResult)(Function()
Dim context = New IssuesContext()
Dim queryable = context.Issues.AsNoTracking().SortBy(args.SortOrder, defaultUniqueSortPropertyName:=NameOf(Issue.Id)).Where(MakeFilterExpression(CType(args.Filter, CriteriaOperator)))
Return queryable.Skip(args.Skip).Take(If(args.Take, 100)).ToArray()
End Function)
End Sub
<Command>
Public Sub GetTotalSummaries(ByVal args As GetSummariesAsyncArgs)
args.Result = Task.Run(Function()
Dim context = New IssuesContext()
Dim queryable = context.Issues.Where(MakeFilterExpression(CType(args.Filter, CriteriaOperator)))
Return queryable.GetSummaries(args.Summaries)
End Function)
End Sub
<Command>
Public Sub ValidateRow(ByVal args As RowValidationArgs)
Dim item = CType(args.Item, Issue)
Dim context = New IssuesContext()
context.Entry(item).State = If(args.IsNewItem, EntityState.Added, EntityState.Modified)
Try
context.SaveChanges()
Finally
context.Entry(item).State = EntityState.Detached
End Try
End Sub
<Command>
Public Sub ValidateRowDeletion(ByVal args As ValidateRowDeletionArgs)
Dim item = CType(args.Items.Single(), Issue)
Dim context = New IssuesContext()
context.Entry(item).State = EntityState.Deleted
context.SaveChanges()
End Sub
Private _Users As IList
Public ReadOnly Property Users As IList
Get
If _Users Is Nothing AndAlso Not DevExpress.Mvvm.ViewModelBase.IsInDesignMode Then
Dim context = New IssuesContext()
_Users = context.Users.[Select](Function(user) New With {
.Id = user.Id,
.Name = user.FirstName & " " + user.LastName
}).ToArray()
End If
Return _Users
End Get
End Property
<Command>
Public Sub DataSourceRefresh(ByVal args As DataSourceRefreshArgs)
_Users = Nothing
RaisePropertyChanged(Nameof(Users))
End Sub
End Class