我有这段代码:
Verification verif = dal.getAllVerifs().Where(v => v.interfa == inter).ToList().FirstOrDefault(v => v.nom == tache.nom);
string name = verif.str.nomStruct;
return RedirectToAction("Index", "Home", new {error = name });
抛出异常:
对象引用未设置为对象的实例。
我查了一下,我的Verification对象已经填充了所有属性,除了" str"属性(a"结构"对象),为空。
这应该返回我的一个表的所有行:
public List<Verification> getAllVerifs()
{
return bdd.verifications.ToList();
}
我的模特:
[Table("Structure")]
public class Structure
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int strucutureId { get; set; }
[Required]
public string nomStruct { get; set; }
[Required]
public bool isXsdExistant { get; set; }
}
[Table("Taches_Verification")]
public class Verification
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int VerifId { get; set; }
[Required]
public string nom { get; set; }
[Required]
public string feuille { get; set; }
[Required]
public Interface interfa { get; set; }
[Required]
public Structure str { get; set; }
[Required]
public int numOrdre { get; set; }
}
我查看了数据库,这是包含&#34;结构的表的主键&#34;对象已填满且没问题。
你有没有遇到过这个问题?
由于
ķ。
答案 0 :(得分:2)
将所有内容写在一行中是很好的,直到某些东西不起作用。
将代码分解成碎片并进行调试。
var verif = dal.getAllVerifs()
var veriflimited = verif.Where(v => v.interfa == inter).ToList()
var singleVerif =veriflimited.FirstOrDefault(v => v.nom == tache.nom);
string name = verif.str.nomStruct;
如果你运行它,你很可能会发现你试图操作哪些对象是null,然后更容易理解为什么。
此外,您正在做的事情可以在很多步骤中完成。
这可能会显示相同的结果并且运行得更快。
dal.getAllVerifs().FirstOrDefault(x =>
v.interfa == inter
&& v.nom == tache.nom
);
另外,你在.getAllVerifs()
做了什么?