2015-07-07 6 views
0

У меня есть этот кусок кода:Entity Framework, нулевой объект атрибута

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(); 
} 

моя модель:

[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; } 

}

Я посмотрел в базе данных, первичный ключ таблицы, содержащей объекты «структуры», заполняется и выполняется нормально.

Вы когда-нибудь испытывали эту проблему?

Благодаря

К.

+0

[Что такое 'NullReferenceException' и как его исправить?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –

+0

Вы задаете неправильный вопрос, чтобы люди начали отмечать как дубликат этого вопроса о домашних животных. Реальный вопрос: почему 'verif.str' null? EF не поддерживает структуры, вот и все. –

+0

Пожалуйста, разместите свой метод 'dal.getAllVerifs()'. –

ответ

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; 

Если вы бежите, что вы, скорее всего, выяснить, какие объекты вы пытаетесь манипулировать, что является недействительным и тогда будет легче понять, почему.

Также вы делаете вещи, которые можно было бы сделать за один шаг во многих ..

Это, вероятно, показывают тот же результат и работать быстрее.

dal.getAllVerifs().FirstOrDefault(x => 
    v.interfa == inter 
    && v.nom == tache.nom 
); 

Кроме того, что вы делаете в .getAllVerifs()?