|
Yes , but I think you don't understand that I don't want to include all the childs.
For the childs with date before 08/08/2014 I want to get only the quantity's sum.
The childs with date after 08/08/2014 I want to include.
The code that I write in my last post , do what I want , but the part " From each...... run very slow.
Do you know a better solution ?
|
|
|
|
|
You have a choice. You can either
1) The slow way. Do the calculation in your property getter where you have to wait for EF to re-hydrate all the related child objects into memory and then your getter code applies its filter and does the calculation.
Or
2) You drop the property getter code and move the filtering to the query and let the database filter the child objects and do the math for you. Something the database engine was designed to do very well.
The choice is up to you.
|
|
|
|
|
Thank you !.
The problem is that for some reasons I need to have the sum values in a Myobj's property.
Do you think that is possible that I can realize your second variant with my above condition ?
Thank you !
|
|
|
|
|
Ho many minutes would it take you to TRY IT?
|
|
|
|
|
the problem is I don't know how ?
Could you explain how can I do ?
|
|
|
|
|
I ALREADY HAVE! MULTIPLE TIMES! Go back and re-read these posts!
|
|
|
|
|
Quote: You have a choice. You can either
1) The slow way. Do the calculation in your property getter where you have to wait for EF to re-hydrate all the related child objects into memory and then your getter code applies its filter and does the calculation.
Or
2) You drop the property getter code and move the filtering to the query and let the database filter the child objects and do the math for you. Something the database engine was designed to do very well.
Can you explain how to do the second ?
|
|
|
|
|
|
yes , but after these instructions , I need to put those sums in the .vls .
and to do this I know only this way :
For Each l In list1
l.Parent.vls=l.sum1
Next
But as I wrote in one of my previous messages this is too slow
|
|
|
|
|
I told you you can't do what you want to do and get the speed out of it. It just isn't possible.
|
|
|
|
|
Quote: You have a choice. You can either
1) The slow way. Do the calculation in your property getter where you have to wait for EF to re-hydrate all the related child objects into memory and then your getter code applies its filter and does the calculation.
Or
2) You drop the property getter code and move the filtering to the query and let the database filter the child objects and do the math for you. Something the database engine was designed to do very well.
The choice is up to you.
Yes but you call the first way as "slow way" an not the second. Why the second is slow ?
|
|
|
|
|
Dude. I don't have your database. I don't know what your overall objective is. I don't know what you're reasons are for anything and you've put up so many code snippets, I have no idea what you're referring to or what you're referring to when you say "slow". Without that stuff, I'm at a severe disadvantage in diagnosing your problems.
YOU have to understand how EF works and you're not going to get that information from a few forum posts. I already told you, pick up a book on EF and Code First and work through them.
I've already told you why your queries are returning 0's for values, but you don't seems to get it and you don't seem to understand the limitations of your design or of EF.
|
|
|
|
|
Hello Friend ! ( not dude ! )
You don't have my database , but you have my EF model from my first post.
And as you have a lot's of experience , you can imagine how the database is.
Anyway , my last question was not for database , but for a simple In memory For.. each loop that run slow.
And I think it's not good to tell a someone " You have asked about this , ok take these books and read" .
Then why this forum is still open , replace your webpage with a big poster :
You that have problems with Entity ------ Read this book
You that have problems with C# ------------ Read this book.
.......
|
|
|
|
|
dilkonika wrote: You don't have my database , but you have my EF model from my first post.
Model, yes. Data, no.
dilkonika wrote: Anyway , my last question was not for database , but for a simple In memory For.. each loop that run slow.
Oh, but it IS about your database. You just refuse to listen to why when I've told you time and time again. Your data is NOT in memory!! You have a proxy object that EF must go back to requery the data for and that's why it's so slow! That's why I keep telling you to use an Include to get the child elements into memory! That's why I keep telling you to pick up a book on EF so you understand all of these little details you don't understand about EF, such a "deferred execution" and "lazy loading"!
dilkonika wrote: You that have problems with Entity ------ Read this book
You that have problems with C# ------------ Read this book.
There's simply too much information to cover in a few forum posts! Forums can NOT answer all questions because forum posts can NOT convey all of the little details of an answer in the limited space available to us. If we could... if we did that we'd all be writing entire book chapters for forum posts!
|
|
|
|
|
Dim dt1 as DateTime=CDate("08/08/2014")
Dim list1 = (From t In context.MyObj Select New With { _
.Parent = t, _
.chl = (From t2 In t.chld.AsQueryable.Where(Function(t3) t3.Date1>=dt1) Select t2)
.sum1 =(From t2 in t.chld.AsQueryable.Where(Function(t2) t2.date1<dt1).Select(Function(t3) t3.quantity).DefaultIfEmpty
}).ToList
and after :
For Each l In list1
l.Parent.vls=l.sum1
Next
After the Tolist , all List1's : .Parent , .chl , .sum1 are in memory ? (That's the book's say about the .ToList , or show me an article that say the opposite ).
So now the following , For...each is run on memory ? Or I'm wrong ?
Thank you !
|
|
|
|
|
Hello !
This is my last question :
I don't know why , but this is working :
Partial Public Class Myobj
Public Property id As Integer
Public property name as string
Public Overridable Property chld As ICollection(Of chld) = New HashSet(Of chld)
End Class
Partial Public Class Myobj
<NotMapped> Public Property vls As integer
End Class
Partial Public Class chld
Public Property id As Integer
Public Property date1 as DateTime
Public Property quantity as Integer
Public Property ParentID as integer
Public Overridable Property MyObj1 As MyObj
End Class
Public Class PseudoMyObj
Inherits MyObj
End Class
Now on my form, I have this code :
Dim dt1 as DateTime=CDate("08/08/2014")
Dim list1 = (From t In context.MyObj Select New With { _
.Parent = New PseudoMyObj With { _
.chld = (From t2 in t.chld.AsQueryable.Where(Function(t3) t3.Date1>=dt1) Select t2), _
.vls=(t.chld.AsQueryable.Where(Function(t2) t2.date1<dt1).Select(Function(t3) t3.quantity).DefaultIfEmpty.Sum()) _
}).ToList
dim mylist as IEnumerable(of MyObj)=list1.Select(Function(t2) t2.Parent)
Please , I want your opinion , do you see anything wrong with this code ?
Thank you !
|
|
|
|
|
I already told you why it works. Your first query, and the sub-queries, on the database engine.
Getting the SQL query statement from the debugger and examining it in Notepad or in SQL Server Manager would have told you that.
Your second query, the last statement in your post, is executed client-side, not on the database engine.
I'm not telling you these things, like the above technique, because I like hearing myself type this crap. I tell you these things because this is how I debug and examine the functionality of EF.
Have a nice life.
|
|
|
|
|
Hi, i have 3 radiobutton, and 3 groupboxes, what im trying to do is when you chose one radiobutton, it will display a groupbox.
what i have(doesnt work), for each radiobutton is :
if radiobutton.checked then
groupbox1.visible = true
groupbox2.visible = False
groupbox3.visible = False
else
end if
|
|
|
|
|
I have to say that the user interface sound a bit odd if controls are shown or hidden based on radio buttons.
Anyhow, can you simply use (without any if)
groupbox1.Visible = radiobutton1.Checked
groupbox2.Visible = radiobutton2.Checked
groupbox3.Visible = radiobutton3.Checked
|
|
|
|
|
right, but which sub a insert that in ?
|
|
|
|
|
Use the CheckedChanged[^] event for the radio buttons. Since the code is the same for all radio buttons you can wire all the three events into the same event handler.
|
|
|
|
|
'After I make a selection in C1 I want C1T2 to enable, and then after selection in C1C2 it enables C1C3.
Private Sub Eval_CSet()
Dim t1 As String = ddlC1T1.Text
Dim t2 As String = ddlC1T2.Text
Dim t3 As String = ddlC1T3.Text
Dim c1 As String = ddlC1.Text
Dim c2 As String = ddlC2.Text
Dim c3 As String = ddlC3.Text
Try
'C1
If ddlC1.SelectedItem IsNot "" Then
Me.ddlC1.Items.Clear()
Me.ddlC1T1.Items.Clear()
Me.ddlC1T2.Items.Clear()
Me.ddlC1T3.Items.Clear()
'or ddlC1.SelectedIndex = -1
Me.ddlC2.Items.Clear()
Me.ddlC3.Items.Clear()
ddlC1T1.Enabled = False
ddlC1T2.Enabled = False
ddlC1T3.Enabled = False
Else
ddlC1T1.Enabled = True
ddlC1T2.Enabled = False
ddlC1T3.Enabled = False
End If
'Also tried
'If t1.Count > 0 Then
' ddlC1T2.Enabled = True
' ddlC1T3.Enabled = False
'Else
' ddlC1T2.Enabled = False
' ddlC1T3.Enabled = False
'End If
'If t2.Count > 0 Then
' ddlC1T3.Enabled = True
'Else
' ddlC1T3.Enabled = False
'End If
'Also tried
''C2
'If c2.ToString <> "" Then
' ddlC2T1.Enabled = True
' ddlC2T1.Enabled = False
'Else
' ddlC2T1.Enabled = False
'End If
Catch ex As Exception
Throw ex
End Try
End Sub
|
|
|
|
|
Bluewolf31 wrote: After I make a selection in C1 There's an event on the combobox that gets fired when the selection changes. That is the place where you'd enable/disable the other combo's.
I'd also recommend to remove the exception-handling; all it does it catch and rethrow.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
That is the way I had it through the selection changes, and it was working but boss wants it done through a private sub all in one location, and now it wont work. Any suggestions?
|
|
|
|
|
I got it : )
changed it to:
If ddlCT1 Is "" Then
Now it functions perfectly.
|
|
|
|