Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Конструктор по умолчанию, который сгенерирован O/R-Designer, вызывает частичную вызванную функцию OnCreated
- таким образом, лучшая практика не должна переопределить конструктора по умолчанию, но вместо этого реализовать частичную функцию OnCreated
в MyDataClasses.cs
инициализировать объекты:
partial void OnCreated()
{
Name = "";
}
Если Вы реализуете других конструкторов, всегда заботитесь для вызова конструктора по умолчанию, таким образом, классы будут инициализированы правильно - например, entitysets (отношения) создаются в конструкторе по умолчанию.
Не похоже, что можно переопределить пустого конструктора. Вместо этого я создал бы метод, который выполняет функциональность, в которой Вы нуждаетесь в пустом конструкторе, и возвращает новый объект.
// Add new partial class to extend functionality
public partial class User {
// Add additional constructor
public User(int id) {
ID = id;
}
// Add static method to initialize new object
public User GetNewUser() {
// functionality
User user = new User();
user.Name = "NewName";
return user;
}
}
Затем в другом месте в Вашем коде, вместо того, чтобы использовать пустого конструктора по умолчанию, выполняют одно из следующих действий:
User user1 = new User(1);
User user2 = User.GetNewUser();