При автоматическом воссоздании базы данных неясно, будут ли загружены ссылаемые объекты или нет.
Контекст — EF CTP 5 и ASP.NET MVC 2. В файле global.asax задается инициализатор базы данных, который вызывает воссоздание базы данных при каждом запуске приложения.
Успешное извлечение объекта из контекста в действии контроллера может по-прежнему вызывать ошибки нулевых ссылок при обходе ссылок, даже если ссылки помечены как обязательные (не нулевые в базе данных). Отключение ленивой загрузки ничего не меняет.
Это поведение не может быть надежно воспроизведено, но наблюдалось на двух разных рабочих станциях (XP, 7) с помощью Cassini.
Ниже представлены модели. Исключение нулевой ссылки возникает при попытке доступа к свойству NewsProvider
объекта NewsFeed
. Снятие виртуального квалификационного турнира не имеет значения.
public class NewsProvider
{
public int Id { get; set; }
[Required(ErrorMessage = "Please enter a name")]
[StringLength(50, ErrorMessage = "The name is too long")]
public string Name { get; set; }
}
public class NewsFeed
{
public int Id { get; set; }
[Required(ErrorMessage = "Please enter a name")]
[StringLength(50, ErrorMessage = "The name is too long")]
public string Name { get; set; }
[Required(ErrorMessage = "Please enter a URL")]
[StringLength(300, ErrorMessage = "The URL is too long")]
public string Url { get; set; }
[Required(ErrorMessage = "Please enter a news provider")]
public virtual NewsProvider NewsProvider { get; set; }
}