C# 尝试根据表单输入的错误将信息输入数据库列

C# 尝试根据表单输入的错误将信息输入数据库列,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我甚至不知道这个问题怎么说,所以请容忍我。如果需要,我会编辑 让我们从我的代码开始: var assetMonth = "assest."+Month; var billableAssests = (from s in db.Assets where s.SystemPosition == 1 select s).ToList(); try {

我甚至不知道这个问题怎么说,所以请容忍我。如果需要,我会编辑

让我们从我的代码开始:

var assetMonth = "assest."+Month;
var billableAssests = (from s in db.Assets
                              where s.SystemPosition == 1
                              select s).ToList();
        try {

            foreach (var assests in billableAssests)
            {
                    assests.PreviousDateBilled = assests.LastDateBilled;
                    assests.LastDateBilled = today;
                    assetMonth = assests.MonthlyChargeRate; <===HERE
                    assests.RunnungLeaseTotal = assests.RunnungLeaseTotal + assests.MonthlyChargeRate;
                    if (assests.MonthBilled == null)
                    {
                        assests.MonthBilled =  1;
                    }
                    else
                    {
                        assests.MonthBilled = assests.MonthBilled + 1;
                    }

                    //db.Entry(billableAssests).State = EntityState.Modified;
                    db.SaveChanges();

                }
         }

嗯,你有两个选择

首先是重构您的模型,可能还有您的数据库,这样您就可以拥有一个月值集合,而不是12个月的字段。这将更容易更新,因为您可以使用传入的月份来确定您想要哪个条目(如果它存在),或者添加它(如果它不存在)

 public class AssetMonth
 {
     string AssetTag { get;set;}
     DateTime Month { get;set;} // DateTime would *probably* be the best choice for this
     Decimal? MonthlyChargeRate { get;set;}
 }
第二种方法是使用一种很好的老式
开关
语句:

 switch(Month) // I don't know what type this is; I'm assuming string.
 {
    case "Jan":
         model.Jan = assets.MonthlyChargeRate;
         break;
    case "Feb":
         model.Feb = assets.MonthlyChargeRate;
    // etc.
}
第三,如果你真的很喜欢,你可以用反射来设定值

 PropertyInfo prop = typeof(Asset).GetProperty(Month); // again, assuming string
 prop.SetValue(model, assets.MonthlyChargeRage);

但我鼓励您重构模型。这将为您提供最佳设计,并消除对解决方案(如选项2和3)的需求

你能告诉我们你想插入的表格是什么样子吗?是的。我认为我们需要查看资产表(但我可能错了)。您需要向我们显示包含要我们插入的列的表/实体。谢谢。懒惰的我不想重构模型。但这是正确的处理方法。
 PropertyInfo prop = typeof(Asset).GetProperty(Month); // again, assuming string
 prop.SetValue(model, assets.MonthlyChargeRage);