Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 一个数据库条目中的总金额-MVC 3_C#_Asp.net Mvc 3_Ef Code First - Fatal编程技术网

C# 一个数据库条目中的总金额-MVC 3

C# 一个数据库条目中的总金额-MVC 3,c#,asp.net-mvc-3,ef-code-first,C#,Asp.net Mvc 3,Ef Code First,我写了一个方法,在一个大学的系统中为导师生成佣金单。导师让某些学生以每月一定的费用与他们一起注册,并且他们可以从他们提供的课程中获得佣金。使用此方法,我试图计算属于导师的所有注册的总金额(即,如果他们有3名学生,每个学生每月注册R460,总金额将为1380乘以他们的佣金百分比)。因此,我希望生成一份佣金单(TutorCommission实体中的一个数据库条目)数据库中每个导师的总金额。以下是代码: public ActionResult CreateBulkCommissions()

我写了一个方法,在一个大学的系统中为导师生成佣金单。导师让某些学生以每月一定的费用与他们一起注册,并且他们可以从他们提供的课程中获得佣金。使用此方法,我试图计算属于导师的所有注册的总金额(即,如果他们有3名学生,每个学生每月注册R460,总金额将为1380乘以他们的佣金百分比)。因此,我希望生成一份佣金单(TutorCommission实体中的一个数据库条目)数据库中每个导师的总金额。以下是代码:

  public ActionResult CreateBulkCommissions()
        {
{
    var month = DateTime.Now.ToString("MMMM");

    var enrolments = db.Enrollments.ToList();
    var tutor = db.Tutors.ToList();

    IEnumerable<TutorCommission> tutorsCommissionsAlt = enrolments // Take the enrollments
        .GroupJoin( // This will group enrollments by the tutor
            tutor, // Join with the tutor's commission percentages.
            e => e.TutorNoID, // Use tutorNoID for left Key
            tcp => tcp.TutorNoID, // ... and right key
            (e, tcp) => new TutorCommission // Create entry which is the tutor and his total commission
            {
                TutorNoID = e.TutorNoID,
                CommissionAmount = (long)tcp.Sum(c => c.TutorCommissionPercentage * e.MonthlyFee),
                CommissionMonth = month,  // string constant 
                CommissionStatus = "Unpaid",
            });

    foreach (var com in tutorsCommissionsAlt)
    {
        db.TutorCommission.Add(com);
        db.SaveChanges();
    }

    return RedirectToAction("Index");
}
        }
public ActionResult())
{
{
var month=DateTime.Now.ToString(“MMMM”);
var enrolments=db.enrolments.ToList();
var tutor=db.Tutors.ToList();
IEnumerable TutorsCommissionAlt=注册//接受注册
.GroupJoin(//这将由导师对注册进行分组
导师,//加入导师的佣金百分比。
e=>e.TutorNoID,//对左键使用TutorNoID
tcp=>tcp.TutorNoID,//…和右键
(e,tcp)=>新建导师委员会//创建导师及其总佣金的条目
{
TutorNoID=e.TutorNoID,
佣金金额=(长)tcp.Sum(c=>c.TutorCommissionPercentage*e.MonthlyFee),
CommissionMonth=month,//字符串常量
佣金状态=“未付”,
});
foreach(导师委员会ALT中的var com)
{
db.TutorCommission.Add(com);
db.SaveChanges();
}
返回操作(“索引”);
}
}
目前,此代码为每个注册生成一个新的数据库条目(因此,如果他们有20个注册,则将为该月生成20个数据库条目)。我可以对此代码进行哪些更改,以将每个导师的总金额放入一个数据库条目中?以下是相关类:

public class Enrollment
{
    [Key]
    [Display(Name = "Enrollment ID Number")]
    public long EnrollmentIDNumber { get; set; }
    [Display(Name = "Client ID Number")]
    public long ClientNumberID { get; set; }
    [Display(Name = "Tutor ID Number")]
    public long TutorNoID { get; set; }
    [Display(Name = "Course Name")]
    public string CourseName { get; set; }
    [Display(Name = "Lesson Time")]
    public string LessonTime { get; set; }
    [Display(Name = "Lesson Day")]
    public string LessonDay { get; set; }
    [Display(Name = "Lesson Location")]
    public string LessonLocation { get; set; }
    [Display(Name = "Lesson Type")]
    public string LessonType { get; set; }
    [Display(Name = "Lesson Level")]
    public string LessonLevel { get; set; }
    [Display(Name = "Monthly Fee")]
    public long MonthlyFee { get; set; }

    public virtual Client Client { get; set; }
    public virtual Tutor Tutor { get; set; }

}

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 double 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<CommissionPayments> CommissionPayments { get; set; }

}

public class Tutor
{
    [Key]
    [Display(Name = "Tutor ID Number")]
    public long TutorNoID { get; set; }
    [Required]
    [StringLength(50, ErrorMessage="First name must be less than 50 characters")]
    [Display(Name = "First Name")]
    public string TutorFirstName { get; set; }
    [StringLength(50, ErrorMessage = "Last name must be less than 50 characters")]
    [Display(Name = "Last Name")]
    public string TutorLastName { get; set; }
    [DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
    [Display(Name = "Birth Date")]
    public DateTime? TutorBirthDate { get; set; }
    [Display(Name = "Cellphone Number")]
    public string TutorCellphoneNumber { get; set; }
    [Display(Name = "Home Number")]
    public string TutorHomeNumber { get; set; }
    [RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$", ErrorMessage = "Not a valid email address")]
    [Display(Name = "Email Address")]
    public string TutorEmailAddress { get; set; }
    [Display(Name = "Street Address")]
    public string TutorStreetAddress { get; set; }
    [Display(Name = "Suburb")]
    public string TutorSuburb { get; set; }
    [Display(Name = "City")]
    public string TutorCity { get; set; }
    [Display(Name = "Postal Code")]
    public string TutorPostalCode { get; set; }
    [Display(Name="Full Name")]
    public string FullName
    {
        get
        {
            return TutorFirstName + " " + TutorLastName;
        }
    }
    [Display(Name="Commission Percentage")]
    [Required]
    public double TutorCommissionPercentage { get; set; }

    public virtual ICollection<Enrollment> Enrollments { get; set; }
    public virtual ICollection<TutorCommission> TutorCommissions { get; set; }
公共班级注册
{
[关键]
[显示(Name=“注册ID号”)]
公共长注册IDNumber{get;set;}
[显示(Name=“客户ID号”)]
public long clientnumberrid{get;set;}
[显示(Name=“导师ID号”)]
公共长TutorNoID{get;set;}
[显示(Name=“课程名称”)]
公共字符串CourseName{get;set;}
[显示(Name=“课程时间”)]
公共字符串LessonTime{get;set;}
[显示(Name=“课程日”)]
公共字符串LessonDay{get;set;}
[显示(Name=“课程位置”)]
公共字符串LessonLocation{get;set;}
[显示(Name=“课程类型”)]
公共字符串LessonType{get;set;}
[显示(名称=“课程级别”)]
公共字符串LessonLevel{get;set;}
[显示(Name=“月费”)]
公共长月份fee{get;set;}
公共虚拟客户端{get;set;}
公共虚拟导师{get;set;}
}
公共班级辅导委员会
{
[关键]
[显示(Name=“佣金ID”)]
公共长委托ID{get;set;}
[显示(Name=“佣金月”)]
公共字符串CommissionMonth{get;set;}
[显示(Name=“佣金金额”)]
公共双佣金挂载{get;set;}
[显示(Name=“佣金状态”)]
公共字符串CommissionStatus{get;set;}
[显示(Name=“导师ID号”)]
公共长TutorNoID{get;set;}
公共虚拟导师{get;set;}
公共虚拟ICollection佣金支付{get;set;}
}
公开课导师
{
[关键]
[显示(Name=“导师ID号”)]
公共长TutorNoID{get;set;}
[必需]
[StringLength(50,ErrorMessage=“名字必须少于50个字符”)]
[显示(Name=“First Name”)]
公共字符串TutorFirstName{get;set;}
[StringLength(50,ErrorMessage=“姓氏必须少于50个字符”)]
[显示(Name=“Last Name”)]
公共字符串TutorLastName{get;set;}
[DisplayFormat(DataFormatString=“{0:d}”,ApplyFormatInEditMode=true)]
[显示(Name=“出生日期”)]
公共日期时间?TutorBirthDate{get;set;}
[显示(Name=“手机号码”)]
公共字符串TutorCellphoneNumber{get;set;}
[显示(Name=“家庭号码”)]
公共字符串TutorHomeNumber{get;set;}
[RegularExpression(“^[a-z0-9\\+-]+(\\.[a-z0-9\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\.([a-z]{2,4}$”,ErrorMessage=“不是有效的电子邮件地址”)]
[显示(Name=“电子邮件地址”)]
公共字符串TutorEmailAddress{get;set;}
[显示(Name=“街道地址”)]
公共字符串TutorStreetAddress{get;set;}
[显示(Name=“郊区”)]
公共字符串TutorSuburb{get;set;}
[显示(Name=“City”)]
公共字符串TutorCity{get;set;}
[显示(名称=“邮政编码”)]
公共字符串TutorPostalCode{get;set;}
[显示(Name=“全名”)]
公共字符串全名
{
得到
{
返回TutorFirstName+“”+TutorLastName;
}
}
[显示(Name=“佣金百分比”)]
[必需]
公共双TutorCommissionPercentage{get;set;}
公共虚拟ICollection注册{get;set;}
公共虚拟ICollection TutorCommissions{get;set;}
谢谢,
艾米

看起来你的藏书被指定的方式不对-你不应该把一份报名表加入到一个导师的名单中吗

IEnumerable<TutorCommission> tutorsCommissionsAlt = enrolments.GroupJoin(tutor ...
IEnumerable TutorsCommissionAlt=enrolments.GroupJoin(导师。。。
应该是:

IEnumerable<TutorCommission> tutorsCommissionsAlt = tutor.GroupJoin(enrolments...
IEnumerable TutorsCommissionAlt=tutor.GroupJoin(注册。。。
我把这段代码放在一起,它似乎检查出:

        var month = DateTime.Now.ToString("MMMM");

        var enrolments = new List<Enrollment>();
        enrolments.Add(new Enrollment { TutorNoID = 1, MonthlyFee = 1500 });
        enrolments.Add(new Enrollment { TutorNoID = 1, MonthlyFee = 4500 });

        var tutor = new List<Tutor>();
        tutor.Add(new Tutor { TutorNoID = 1, TutorCommissionPercentage = 0.5 });


        IEnumerable<TutorCommission> tutorsCommissionsAlt = tutor.GroupJoin(enrolments,
                tut => tut.TutorNoID, 
                enr => enr.TutorNoID,
                (tut, enr) => new TutorCommission // Create entry which is the tutor and his total commission
                {
                    TutorNoID = tut.TutorNoID,
                    CommissionAmount = (long)enr.Sum(c => c.MonthlyFee * tut.TutorCommissionPercentage),
                    CommissionMonth = month,  // string constant 
                    CommissionStatus = "Unpaid",
                });


        foreach (var com in tutorsCommissionsAlt)
        {
            Console.WriteLine(com.CommissionAmount);
        }

// Output: 3000
var month=DateTime.Now.ToString(“MMMM”);
变量注册=新列表();
添加(新注册{TutorNoID=1,MonthlyFee=1500});
注册。添加(新注册{Tut