实体框架,空对象属性
本文关键字:对象 属性 框架 实体 | 更新日期: 2023-09-27 18:01:18
我有这段代码:
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"属性(一个"结构"对象),它是空的。
这应该返回我的一个表的所有行:
public List<Verification> getAllVerifs()
{
return bdd.verifications.ToList();
}
my model:
[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; }
}
我在数据库中查看,包含"结构"对象的表的主键被填充并且是ok的。
你遇到过这个问题吗?
感谢k .
把所有东西都写在一行里是很好的,直到有些东西不起作用。
把你的代码分成几个部分,然后调试。
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;
如果你运行它,你很可能会发现你试图操作的对象中哪个是空的,然后更容易理解为什么。
而且你正在做的事情可以在许多步骤中一步完成。
这可能会显示相同的结果,并且运行得更快。
dal.getAllVerifs().FirstOrDefault(x =>
v.interfa == inter
&& v.nom == tache.nom
);
还有,你在.getAllVerifs()
做什么?