Bulk Database Entries - Commissionhttp://forums.asp.net/t/1728315.aspx/1?Bulk+Database+Entries+CommissionWed, 12 Oct 2011 06:06:34 -040017283154630763http://forums.asp.net/p/1728315/4630763.aspx/1?Bulk+Database+Entries+CommissionBulk Database Entries - Commission <p>Hi,</p> <p>I am writing an MVC 3 project and I'm using entity framework. I've written a method that generates bulk database entries, and this is for Invoices. The system is for a college, so the invoices are generated from a class called Enrollments (the monthly fee for a student is in Enrollments). This method works correctly, but now I am looking to generate commission slips for the tutors of the college. The amount of the tutors monthly commission would be the amount their specific students pay X the Commission percentage they receive. I am unsure how to write the code for this. These are the relevant model classes:</p> <p></p> <pre class="prettyprint">public class Enrollment { [Key] [Display(Name = &quot;Enrollment ID Number&quot;)] public long EnrollmentIDNumber { get; set; } [Display(Name = &quot;Client ID Number&quot;)] public long ClientNumberID { get; set; } [Display(Name = &quot;Tutor ID Number&quot;)] public long TutorNoID { get; set; } [Display(Name = &quot;Course Name&quot;)] public string CourseName { get; set; } [Display(Name = &quot;Lesson Time&quot;)] public string LessonTime { get; set; } [Display(Name = &quot;Lesson Day&quot;)] public string LessonDay { get; set; } [Display(Name = &quot;Lesson Location&quot;)] public string LessonLocation { get; set; } [Display(Name = &quot;Lesson Type&quot;)] public string LessonType { get; set; } [Display(Name = &quot;Lesson Level&quot;)] public string LessonLevel { get; set; } [Display(Name = &quot;Monthly Fee&quot;)] public long MonthlyFee { get; set; } public virtual Client Client { get; set; } public virtual Tutor Tutor { get; set; } }</pre> <pre class="prettyprint"> public class TutorCommission { [Key] [Display(Name = "Commission ID")] public long CommissionID { get; set; } [Display(Name = "Commission Month")] public string CommissionMonth {get; set;} [Display(Name = "Commission Amount")] public long CommissionAmount { get; set; } [Display(Name = "Commission Status")] public string CommissionStatus { get; set; } [Display(Name = "Tutor ID Number")] public long TutorNoID { get; set; } public virtual Tutor Tutor { get; set; } public virtual ICollection&lt;CommissionPayments&gt; CommissionPayments { get; set; } }</pre> <pre class="prettyprint"> public class TutorCommissionPercentage { [Key] public int TutorCommissionID { get; set; } public long TutorNoID { get; set; } [Range(0, 100, ErrorMessage="Percentage must be between 0 and 100")] [Display(Name="Commission Percentage")] public decimal CommissionPercentage { get; set; } public virtual Tutor Tutor { get; set; } }</pre> <p>The code for the generate Invoices is the following:</p> <pre class="prettyprint"> public ActionResult CreateBulkInvoices() { var month = DateTime.Now.ToString("MMMM"); var enrolments = db.Enrollments.ToList(); var newInvoices = from enrolment in enrolments select new Invoices() { InvoiceAmount = enrolment.MonthlyFee, InvoiceMonth = month, // string constant InvoiceStatus = "Unpaid", ClientNumberID = enrolment.ClientNumberID }; foreach (var newInvoice in newInvoices) { db.Invoice.Add(newInvoice); db.SaveChanges(); } return RedirectToAction("Index"); }</pre> <p>So to generate the tutor commission database entries, students enrolled with the tutors along with their monthly fees need to be used from the Enrollment class, added together and multiplied by the commission percentage of the tutor. I would like this method to generate the commission slips for each tutor in the database. The purpose of this is for a manager to click on a link in order to generate these entries for the current month.</p> <p>Thanks Amy</p> 2011-10-08T17:27:35-04:004630781http://forums.asp.net/p/1728315/4630781.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>A bit hard to folow but i will have a try, this is asuming tutorcommiosn and <span class="typ"> TutorCommissionPercentage are linked thought tutor</span></p> <p><span class="typ">by the way, shouldent TutorCommisonPercentage simply be a property of Tutor, I write in vb, sio my c# syntax may be a bit off</span></p> <p>&nbsp;</p> <pre class="prettyprint">var newInvoices = from enrolment in enrolments select new Invoices() { InvoiceAmount = enrolment.MonthlyFee, InvoiceMonth = month, // string constant InvoiceStatus = &quot;Unpaid&quot;, ClientNumberID = enrolment.ClientNumberID, TutorNoID = enrolment.TutorNoID }; foreach (var newInvoice in newInvoices) { var TutorCommision = db.TutorCommisions.where(w =&gt; w.TutorNoID .equals(newInvoice.TutorNoID )) .select(s =&gt; new TutorCommission { CommissionAmount = s.Totor.TutorCommissionPercentage * newInvoice.InvoiceAmount }).singleordefault db.Invoice.Add(newInvoice); db.SaveChanges(); }</pre> <p><span class="pln"></span></p> 2011-10-08T17:53:23-04:004630802http://forums.asp.net/p/1728315/4630802.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>Thanks for your reply. Sorry for being difficult to follow! Yes, TutorCommission and TutorCommissionPercentage are linked through tutor. Each client is enrolled with a specific tutor at a specific time, day etc. So what the statement needs to do is find out how many enrollments are linked to each tutor (through TutorNoID in the Enrollment class) and accumulate the monthly fees accordingly. And then multiply this total amount by the TutorCommissionPercentage. So, shouldn't the CommissionAmount = enrolment.MonthlyFee have some sort of Sum() function to add all the amounts together? This is what I'm not sure how to do.</p> <p></p> <p>I've rewritten your statement below, with all the Invoice information changed to Commission:</p> <pre class="prettyprint">public ActionResult CreateBulkCommissions() { var month = DateTime.Now.ToString(&quot;MMMM&quot;); var enrolments = db.Enrollments.ToList(); var newCommissions = from enrolment in enrolments select new TutorCommission() { CommissionAmount = enrolment.MonthlyFee, CommissionMonth = month, // string constant CommissionStatus = &quot;Unpaid&quot;, TutorNoID = enrolment.TutorNoID }; foreach (var newCommission in newCommissions) { var TutorCommision = db.TutorCommission.Where(w =&gt; w.TutorNoID = newCommission.TutorNoID).select(s =&gt; new TutorCommission { CommissionAmount = s.Tutor.TutorCommissionPercentage * newCommission.CommissionAmount}).singleordefault; db.TutorCommission.Add(newCommission); db.SaveChanges(); } return RedirectToAction(&quot;Index&quot;); }</pre> <p>But it's giving me an error on this statement:&nbsp;</p> <pre class="prettyprint">w =&gt; w.TutorNoID = newCommission.TutorNoID</pre> <p>that it cannot convert lambda expression to delegate type 'System.Func&lt;DFPProductions_Default.Models.TutorCommission,int,bool&gt;' because some of the return types in the block are not implicitly convertible to the delegate return type and that it cannot implicitly convert type 'long' to 'bool'</p> 2011-10-08T18:33:45-04:004630998http://forums.asp.net/p/1728315/4630998.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>Note I added TutorNoId to your select new TutorCommissions collection, but forget that, try thsi<br> <br> </p> <p>in this line i am grouping the comisions by the tutor object (I hope i am doing this free hand) then getting the sum of commissionamout for each tutor, times the times the tutors commissionpercentage. key repersents the tutor we grouped by. give it a go and let me know how you went</p> <p>return&nbsp;&nbsp; newCommissions.groupby(g =&gt; g.Tutor).select(s =&gt; new&nbsp; TutorCommission {<br> &nbsp;&nbsp;&nbsp; { <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CommissionAmount = s.sum(u =&gt; u.CommissionAmount) * s.key.TutorCommissionPercentage.CommissionPercentage</p> <p>&nbsp;&nbsp;&nbsp; } ).tolist&nbsp;</p> 2011-10-09T03:41:26-04:004631108http://forums.asp.net/p/1728315/4631108.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>Thanks. I'm trying this out - am I putting this within the loop? I'm having a problem with this line:&nbsp;s.Key.TutorCommissionPercentage.</p> <p>Intellisense won't bring up CommissionPercentage, or any of the fields within TutorCommissionPercentage.</p> 2011-10-09T07:53:26-04:004631151http://forums.asp.net/p/1728315/4631151.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>The code I gave you will give you the total commission for each tutor for all his enrolments,</p> <p>I am now seeing that you want the tutor commission for each enrolment individually, am I correct?</p> <p>If so things are much easier,</p> <p>var newCommissions = from enrolment in enrolments<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select new TutorCommission()<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CommissionAmount = enrolment.MonthlyFee * enrolment.Tutor.TutorCommissionPercentage.CommissionPercentage,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CommissionMonth = month,&nbsp; // string constant<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CommissionStatus = &quot;Unpaid&quot;,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</p> <p>&nbsp;</p> <p>Try that</p> 2011-10-09T09:04:04-04:004631161http://forums.asp.net/p/1728315/4631161.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>You were correct the first time in fact, I want it to be the total commission for all of the tutors enrollments, so it is more compex. I'm just not sure where to put your previous code? I have it like this:</p> <pre class="prettyprint">public ActionResult CreateBulkCommissions() { var month = DateTime.Now.ToString(&quot;MMMM&quot;); var enrolments = db.Enrollments.ToList(); var newCommissions = from enrolment in enrolments select new TutorCommission() { CommissionAmount = enrolment.MonthlyFee, CommissionMonth = month, // string constant CommissionStatus = &quot;Unpaid&quot;, TutorNoID = enrolment.TutorNoID }; foreach (var newCommission in newCommissions) { return newCommissions.GroupBy(g =&gt; g.Tutor).Select(s =&gt; new TutorCommission { CommissionAmount = s.Sum(u =&gt; u.CommissionAmount) * s.Key.TutorCommissionPercentage.CommissionPercentage }).tolist; db.TutorCommission.Add(newCommission); db.SaveChanges(); } return RedirectToAction(&quot;Index&quot;); }</pre> <p>But as I mentioned earlier, the s.Key.TutorCommissionPercentage.Commission Percentage is giving me an error</p> 2011-10-09T09:11:57-04:004631166http://forums.asp.net/p/1728315/4631166.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>ok</p> <p>you need this bottom line added, i dont have the Turo object so im guessing a bit here.</p> <p>var newCommissions = from enrolment in enrolments<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select new TutorCommission()<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CommissionAmount = enrolment.MonthlyFee,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CommissionMonth = month,&nbsp; // string constant<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CommissionStatus = &quot;Unpaid&quot;,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tutor = new Turor { TutorNoId = &nbsp;enrolmen.TuTor.TutorNoId, TutorCommissionPercentage = new TutorCommissionPercentage {CommissionPercentage =&nbsp;enrolment.Tutor.TutorCommissionPercentage.CommissionPercentage}<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</p> <p>&nbsp;</p> <p>then tis will give you a list of tutors commisions, use the list &quot;TutorComs&quot; in your loop</p> <p>List&lt;TutorCommission&gt; TutorComs = newCommissions.groupby(g =&gt; w.Tutor).select(s =&gt; new&nbsp; TutorCommission {<br> &nbsp;&nbsp;&nbsp; { <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CommissionAmount = s.sum(u =&gt; u.CommissionAmount) * g.key.TutorCommissionPercentage.CommissionPercentage,<br> TutorNoID = s.key.TutorNoID</p> <p>&nbsp;&nbsp;&nbsp; } ).tolist</p> <p>&nbsp;</p> <p>&nbsp;</p> 2011-10-09T09:19:10-04:004631182http://forums.asp.net/p/1728315/4631182.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>Okay cool, I've added all that:</p> <pre class="prettyprint">public ActionResult CreateBulkCommissions() { var month = DateTime.Now.ToString(&quot;MMMM&quot;); var enrolments = db.Enrollments.ToList(); var newCommissions = from enrolment in enrolments select new TutorCommission() { CommissionAmount = enrolment.MonthlyFee, CommissionMonth = month, // string constant CommissionStatus = &quot;Unpaid&quot;, Tutor = new Tutor { TutorNoID = enrolment.Tutor.TutorNoID, TutorCommissionPercentage = new TutorCommissionPercentage { CommissionPercentage = enrolment.Tutor.TutorCommissionPercentage.CommissionPercentage } } }; foreach (var newCommission in newCommissions) { List&lt;TutorCommission&gt; TutorComs = newCommissions.GroupBy(g =&gt; g.Tutor).Select(s =&gt; new TutorCommission { CommissionAmount = s.Sum(u =&gt; u.CommissionAmount) * g.Key.TutorCommissionPercentage.CommissionPercentage, TutorNoID = s.Key.TutorNoID } ).ToList; db.TutorCommission.Add(newCommission); db.SaveChanges(); } return RedirectToAction(&quot;Index&quot;); }</pre> <p>And I have two errors. One here: { CommissionPercentage = enrolment.Tutor.TutorCommissionPercentage.CommissionPercentage } }, saying that 'System.Collections.Generic.ICollection' does not contain a definition for 'CommissionPercentage' and no extension method 'CommissionPercentage' accepting a first argument of type 'System.Collections.Generic.ICollection' could be found.</p> <p>And g.Key.TutorCommissionPercentage.CommissionPercentage, that 'g' does not exist in the current context.</p> 2011-10-09T09:38:46-04:004631185http://forums.asp.net/p/1728315/4631185.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>g.Key.TutorCommissionPercentage</p> <p>should be</p> <p>s.Key.TutorCommissionPercentage</p> <p>&nbsp;</p> <p>change that, and ill get back on the othr error</p> <p>&nbsp;</p> 2011-10-09T09:44:09-04:004631186http://forums.asp.net/p/1728315/4631186.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p><span class="pun"><span class="pln">&nbsp;</span><span class="kwd">var</span><span class="pln"> newCommissions </span><span class="pun">=db<span class="pun">.</span><span class="typ">Enrollments.</span></span><span class="kwd">select(s =&gt;</span><span class="pln">&nbsp;</span><span class="kwd">new</span><span class="pln"> </span><span class="typ">TutorCommission</span><span class="pun">()</span><span class="pln"> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="pun">{</span><span class="pln"> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="typ">CommissionAmount</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> enrolment</span><span class="pun">.</span><span class="typ">MonthlyFee</span><span class="pun">,</span><span class="pln"> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="typ">CommissionMonth</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> month</span><span class="pun">,</span><span class="pln">&nbsp; </span><span class="com">// string constant</span><span class="pln"> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="typ">CommissionStatus</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">&quot;Unpaid&quot;</span><span class="pun">,</span><span class="pln"> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="typ">Tutor</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Tutor</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="typ">TutorNoID</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> enrolment</span><span class="pun">.</span><span class="typ">Tutor</span><span class="pun">.</span><span class="typ">TutorNoID</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TutorCommissionPercentage</span><span class="pln"> </span> <span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">TutorCommissionPercentage</span><span class="pln"> </span> <span class="pun">{</span><span class="pln"> </span><span class="typ">CommissionPercentage</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> enrolment</span><span class="pun">.</span><span class="typ">Tutor</span><span class="pun">.</span><span class="typ">TutorCommissionPercentage</span><span class="pun">.</span><span class="typ">CommissionPercentage</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="pun">};</span><span class="pln"> </span></span></p> <p><span class="pln">replace the code below with the code above,<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="kwd">var</span><span class="pln"> enrolments </span><span class="pun">=</span><span class="pln"> db</span><span class="pun">.</span><span class="typ">Enrollments</span><span class="pun">.</span><span class="typ">ToList</span><span class="pun">();</span><span class="pln"> <br> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="kwd">var</span><span class="pln"> newCommissions </span> <span class="pun">=</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> enrolment </span><span class="kwd">in</span><span class="pln"> enrolments <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="kwd">select</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">TutorCommission</span><span class="pun">()</span><span class="pln"> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="pun">{</span><span class="pln"> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="typ">CommissionAmount</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> enrolment</span><span class="pun">.</span><span class="typ">MonthlyFee</span><span class="pun">,</span><span class="pln"> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="typ">CommissionMonth</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> month</span><span class="pun">,</span><span class="pln">&nbsp; </span><span class="com">// string constant</span><span class="pln"> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="typ">CommissionStatus</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">&quot;Unpaid&quot;</span><span class="pun">,</span><span class="pln"> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="typ">Tutor</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Tutor</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="typ">TutorNoID</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> enrolment</span><span class="pun">.</span><span class="typ">Tutor</span><span class="pun">.</span><span class="typ">TutorNoID</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TutorCommissionPercentage</span><span class="pln"> </span> <span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">TutorCommissionPercentage</span><span class="pln"> </span> <span class="pun">{</span><span class="pln"> </span><span class="typ">CommissionPercentage</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> enrolment</span><span class="pun">.</span><span class="typ">Tutor</span><span class="pun">.</span><span class="typ">TutorCommissionPercentage</span><span class="pun">.</span><span class="typ">CommissionPercentage</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="pun">};</span><span class="pln"> <br> </span></span></p> <p>&nbsp;</p> <p>&nbsp;</p> 2011-10-09T09:47:10-04:004631189http://forums.asp.net/p/1728315/4631189.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>The second error was because we were working with a list and not the entity direct</p> <p>&nbsp;</p> <p>now when we ae making a commission obect, we are adding the tutor object, and then adding the <span class="typ">TutorCommissionPercentage</span><span class="pln"> </span>object to the Tutor.</p> <p>i have a question, why is the <span class="typ">TutorCommissionPercentage a child object, should <span class="typ">CommissionPercentage</span><span class="pln"> </span></span><span class="pln">&nbsp;simply be a property of Tutor?<br> Are there more then one tutor comissions?</span></p> <p><span class="pln"><span class="pln">I think you will still get an error. </span> </span></p> <p><span class="pln"><span class="pln">to fix, you can either make <span class="typ"> CommissionPercentage a property of Tutor and not a collection of&nbsp;child objects<br> </span></span></span></p> <p><span class="pln"><span class="pln"><span class="typ"><span class="pln"><span class="pln"><span class="typ">or you can change this line enrolment<span class="pun">.</span><span class="typ">Tutor</span><span class="pun">.</span><span class="typ">TutorCommissionPercentage</span><span class="pun">.</span><span class="typ">CommissionPercentage<br> to<br> </span><span class="pln"></span><span class="pun"></span>enrolment<span class="pun">.</span><span class="typ">Tutor</span><span class="pun">.</span><span class="typ">TutorCommissionPercentage.firstordefault</span><span class="pun">.</span><span class="typ">CommissionPercentage</span><span class="pln"> </span><span class="pun"></span></span></span></span></span></span></span></p> <p><span class="pln"><span class="pln"><span class="typ"></span></span></span></p> <p><span class="pln"><span class="pln"><span class="typ"></span></span></span></p> <p><span class="pln"></span></p> 2011-10-09T09:55:08-04:004631208http://forums.asp.net/p/1728315/4631208.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>Okay I've made TutorCommissionPercentage a property of Tutor. The reason I had it alone was because I wanted to keep it confidential but I can still do that by making it a property.</p> <pre class="prettyprint">public ActionResult CreateBulkCommissions() { var month = DateTime.Now.ToString(&quot;MMMM&quot;); var enrolments = db.Enrollments.ToList(); var newCommissions = from enrolment in enrolments select new TutorCommission() { CommissionAmount = enrolment.MonthlyFee, CommissionMonth = month, // string constant CommissionStatus = &quot;Unpaid&quot;, Tutor = new Tutor { TutorNoID = enrolment.Tutor.TutorNoID, TutorCommissionPercentage = new TutorCommissionPercentage { CommissionPercentage = enrolment.Tutor.TutorCommissionPercentage } } }; foreach (var newCommission in newCommissions) { List&lt;TutorCommission&gt; TutorComs = newCommissions.GroupBy(g =&gt; g.Tutor).Select(s =&gt; new TutorCommission { CommissionAmount = s.Sum(u =&gt; u.CommissionAmount) * s.Key.TutorCommissionPercentage, TutorNoID = s.Key.TutorNoID }).ToList; db.TutorCommission.Add(newCommission); db.SaveChanges(); } return RedirectToAction(&quot;Index&quot;); }</pre> <p>How would I change this line accordingly: Tutor = new Tutor { TutorNoID = enrolment.Tutor.TutorNoID, TutorCommissionPercentage = new TutorCommissionPercentage { CommissionPercentage = enrolment.Tutor.TutorCommissionPercentage } } now that I've made TutorCommissionPercentage a property of Tutor?</p> <p>And in this line: CommissionAmount = s.Sum(u =&gt; u.CommissionAmount) * s.Key.TutorCommissionPercentage, it says cannot implicitly convert type long to decimal. How would I explicitly convert it?</p> 2011-10-09T10:24:00-04:004631263http://forums.asp.net/p/1728315/4631263.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>Tutor = new Tutor { TutorNoID = enrolment.Tutor.TutorNoID, TutorCommissionPercentage = &nbsp;enrolment.Tutor.CommissionPercentage }</p> <p>You mignt need to check this, as i normaly program in VB,</p> <p>CommissionAmount = &nbsp;(decimal)s.Sum(u =&gt; u.CommissionAmount) * s.Key.TutorCommissionPercentage</p> <p>or</p> <p>CommissionAmount =&nbsp; (decimal)(s.Sum(u =&gt; u.CommissionAmount) * s.Key.TutorCommissionPercentage)</p> <p>or</p> <p>&nbsp;CommissionAmount =&nbsp; Convert.ToDecimal(s.Sum(u =&gt; u.CommissionAmount) * s.Key.TutorCommissionPercentage)</p> <p>But thats poses another question, why would the answer be a Long, it should be a decimal, double&nbsp;or float, you may be losing your decimal places</p> 2011-10-09T11:37:17-04:004631270http://forums.asp.net/p/1728315/4631270.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>Okay, I've changed the proerty CommissionAmount to a double, but it's now telling me that&nbsp;</p> <pre>Operator '*' cannot be applied to operands of type 'double' and 'decimal'. I get the same error when I try to use a float.</pre> 2011-10-09T11:46:04-04:004631303http://forums.asp.net/p/1728315/4631303.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>This is why i like VB<br> it must be something like</p> <p>CommissionAmount =&nbsp; (decimal)s.Sum(u =&gt; u.CommissionAmount) * s.Key.TutorCommissionPercentage</p> <p>or</p> <p>CommissionAmount =&nbsp; s.Sum(u =&gt; u.CommissionAmount) * (decimal)s.Key.TutorCommissionPercentage</p> <p>&nbsp;</p> 2011-10-09T12:34:41-04:004631310http://forums.asp.net/p/1728315/4631310.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>Hmm, I can't get it work. Surely multiplying a double and a decimal should be allowed? That's something that needs to be done all the time!</p> 2011-10-09T12:45:33-04:004631316http://forums.asp.net/p/1728315/4631316.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>try</p> <p>CommissionAmount = Decimal.Mutiply(s.Sum(u =&gt; u.CommissionAmount) , s.Key.TutorCommissionPercentage)</p> <p>&nbsp;</p> 2011-10-09T12:50:13-04:004631332http://forums.asp.net/p/1728315/4631332.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>I am jumping the gun herre, as i assume you are going to get the &quot;can not convert to stored procedure&quot; error</p> <p>&nbsp;</p> <p>var newCommissions = db.Enrollments.asEnumerable.select(s =&gt; new TutorCommission() <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CommissionAmount = enrolment.MonthlyFee, <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CommissionMonth = month,&nbsp; // string constant <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CommissionStatus = &quot;Unpaid&quot;, <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tutor = new Tutor { TutorNoID = enrolment.Tutor.TutorNoID, enrolment.Tutor.CommissionPercentage }<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</p> <p>&nbsp;</p> <p>Just a tip. thought in this case it does not matter.</p> <p>Linq does not bother the database until a value is used,</p> <p>this lne&nbsp;pulls the whole table into a list</p> <p>&nbsp;var enrolments = db.Enrollments.ToList();</p> <p>We may not need all the table, so it is better to do as i have done above &quot;var newCommissions = db.Enrollments&quot;</p> <p>you can write a lot of linq code and have it compiled into one call to the database, very efficient.</p> <p>Also AsEnumerable also calls the database, but it is sometimes necessary. thing to remember is to use it after any where clause if you can</p> <p>the following line only pulls nine records from the database</p> <p>var newCommissions = db.Enrollments.where(a =&gt; a.id &lt; 10).AsEnumerable.select(s =&gt;.....</p> <p>This line pulls all records from the database</p> <p>var newCommissions = db.Enrollments.AsEnumerable.where(a =&gt; a.id &lt; 10).select(s =&gt;.....</p> <p>The reason we sometimes need asenumerable is because we need to use some code that cannot be converted into sql</p> <p>&nbsp;</p> 2011-10-09T13:09:52-04:004631622http://forums.asp.net/p/1728315/4631622.aspx/1?Re+Bulk+Database+Entries+CommissionRe: Bulk Database Entries - Commission <p>Okay, I've change commission percentage to a double because I'm getting irritated with that error and I want to test if the method is working. Once I did that, the error went away, but now there is error here:</p> <p>&nbsp;}).ToList;&nbsp;</p> <pre>Cannot convert method group 'ToList' to non-delegate type 'System.Collections.Generic.List&lt;DFPProductions_Default.Models.TutorCommission&gt;'.&nbsp;</pre> <pre>Did you intend to invoke the method?</pre> <pre>My code looks like this now, just as a recap:</pre> <pre class="prettyprint">public ActionResult CreateBulkCommissions() { var month = DateTime.Now.ToString(&quot;MMMM&quot;); var enrolments = db.Enrollments.ToList(); var newCommissions = from enrolment in enrolments select new TutorCommission() { CommissionAmount = enrolment.MonthlyFee, CommissionMonth = month, // string constant CommissionStatus = &quot;Unpaid&quot;, Tutor = new Tutor { TutorNoID = enrolment.Tutor.TutorNoID, TutorCommissionPercentage = enrolment.Tutor.TutorCommissionPercentage } }; foreach (var newCommission in newCommissions) { List&lt;TutorCommission&gt; TutorComs = newCommissions.GroupBy(g =&gt; g.Tutor).Select(s =&gt; new TutorCommission { CommissionAmount = s.Sum(u =&gt; u.CommissionAmount) * s.Key.TutorCommissionPercentage, TutorNoID = s.Key.TutorNoID }).ToList; db.TutorCommission.Add(newCommission); db.SaveChanges(); } return RedirectToAction(&quot;Index&quot;); }</pre> 2011-10-09T22:15:56-04:00