我创建了这个模型;
namespace gantt.Models
{
public class ganttModels
{
public IList<ganttModel> allGantt { get; set; }
}
public class ganttModel
{
public string projectName { get; set; }
public IEnumerable<ResourcesSet> rescource { get; set; }
}
}
现在我的计划是向这个模型添加项目,我已经在这样的存储库中完成了这个;
namespace gantt.Models
{
public class GantDataRepository
{
GantEntities dbContext = new GantEntities();
ganttModels returnModels = new ganttModels();
ganttModel tempganttModel = new ganttModel();
public GantDataRepository()
{
foreach (var item in dbContext.WorkPlans)
{
tempganttModel.projectName = item.Product;
tempganttModel.rescource = item.ResourcesSets;
returnModels.allGantt.Add(tempganttModel); // Here i get the error
}
}
public ganttModels getGant()
{
return returnModels;
}
}
}
repositor找到数据并添加它。正如我所看到的那样,我已经实现了返回模型
答案 0 :(得分:9)
returnModels
已初始化。
returnModels.allGantt
不是。
你可以这样做:
public class ganttModels
{
public IList<ganttModel> allGantt { get; set; }
public ganttModels()
{
allGantt = new List<ganttModel>();
}
}
或其他什么。
答案 1 :(得分:1)
您没有在ganttModels Class中实例化您的列表。
public class ganttModels
{
public ganttModels(){
allGantt = new List<ganttModel>();
}
public IList<ganttModel> allGantt { get; set; }
}
答案 2 :(得分:1)
returnModels.allGantt为null。
在gantModels或
的构造函数中创建List的实例在添加电话
之前returnModels.allGantt = new List<gantModel>();
答案 3 :(得分:1)
您可以将构造函数定义为Conrad has it in the answer,也可以删除自动实现的属性并执行:
private IList<ganttModel> _allGantt = new List<ganttModel>();
public IList<ganttModel> AllGantt
{
get { return _allGantt; }
set { _allGantt = value; }
}
答案 4 :(得分:1)
您需要按如下方式定义ganttModels
课程:
public class GanttModels // use correct casing!
{
public GanttModels() { this.AllGantt = new List<GanttMode>(); }
public IList<GanttModel> AllGantt { get; private set; }
}
您还在存储库中重复使用相同的引用,因此您应该这样做:
public class GantDataRepository
{
GantEntities dbContext = new GantEntities();
GanttModels returnModels = new GanttModels();
public GantDataRepository()
{
foreach (var item in dbContext.WorkPlans)
{
returnModels.AllGantt.Add(new GanttModel
{
ProjectName = item.Product,
Rescource = item.ResourcesSets
});
}
}
答案 5 :(得分:0)
你需要初始化一个甘特....
private IList<ganttModel> _allGantt;
public IList<ganttModel> allGantt {
get{ return _allGantt ?? (_allGantt = new new List<ganttModel>()); }
set{ _allGantt = value;}
}