我是相当新的MVC和我一直在试图创建使用DTO作为模型类的视图,但它似乎是用我使用的数据上下文类我模型,即使我正在创建视图时清除选择。查看使用DTO - ASP.NET MVC
这个问题似乎是造成这是由以下异常被抛出并没有任何返回到它的视图造成一个NullReferenceException。
ITSSkillsDatabase.Models.PersonSkillSetsDTO: : EntityType 'PersonSkillSetsDTO' has no key defined. Define the key for this EntityType.
PersonSkillSets: EntityType: EntitySet 'PersonSkillSets' is based on type 'PersonSkillSetsDTO' that has no keys defined.
我的DTO:
namespace ITSSkillsDatabase.Models
{
public class PersonSkillSetsDTO
{
public int IDSkillset { get; set; }
public int IDCategory { get; set; }
public string Product { get; set; }
public string P_Version { get; set; }
public string Notes { get; set; }
public int PersonSkillsID { get; set; }
public int IDPerson { get; set; }
public int Score { get; set; }
public DateTime ScoreDate { get; set; }
public int TargetScore { get; set; }
public DateTime TargetDate { get; set; }
public DateTime RefresherDate { get; set; }
}
}
控制器的方法:
public ActionResult SkillSets(int? id)
{
try
{
if (id == null)
{
return HttpNotFound();
}
var viewModel = (from a in db.SkillSets
join c in db.PersonSkills on a.IDSkillset equals c.IDSkillSet
where c.IDPerson == id
select new Models.PersonSkillSetsDTO
{
IDSkillset = a.IDSkillset,
IDCategory = a.IDCategory,
Product = a.Product,
P_Version = a.P_Version,
Notes = a.Notes,
PersonSkillsID = c.PersonSkillsID,
IDPerson = c.IDPerson,
Score = c.Score,
ScoreDate = c.ScoreDate,
TargetScore = c.TargetScore,
TargetDate = c.TargetDate,
RefresherDate = c.RefresherDate
}).ToList();
return View(viewModel);
}
catch
{
return View(); //this is where the NullReferenceException is thrown
}
}
我知道我能得到通过检查空值来消除NullReferenceException,但是我d我没有任何想法如何解决我的DTO问题。
DTO是不是你的数据上下文,这就是为什么,你要办理的DTO /的ViewModels自己的上下文的一部分。 –
@DawoodAwan我认为这可能是问题。我不确定如何去为DTO创建上下文类。我在我的当前上下文类中有“public partial class LocalModel:DbContext”,什么会替换“DbContext”? (对于我缺乏技术演讲感到抱歉)。 – TheHornyDonut