Моим конкретным приложением является приложение ASP.NET MVC, использующее Entity Framework.
У меня есть объект Entity0, который содержит ссылку (* на 1) на Entity1 ...
public class Entity_0
{
public int ID { get; set; }
public int Entity_1_ID { get; set; }
public Entity_1 Entity_1 { get; set; }
}
У меня также есть некоторая логика в Entity_0, однако эта логика требует, чтобы Entity_1 не был нулевым ...
public Entity_2 GetEntity_2()
{
return new Entity_2() { Number = Entity_1.Value * 10 };
}
Когда новый экземпляр Entity_0 создается посредством привязки модели в контроллере, свойство Entity_1_ID устанавливаетсяоднако свойство навигации Entity_1 остается нулевым до тех пор, пока оно не сохраняется в базе данных.
Мне нужно вызвать GetEntity_2 () и сохранить Entity_0 и Entity_2 в базе данных как одну единицу работы.Сейчас это означает, что мне нужно вручную извлечь Entity_1 из хранилища и назначить его Entity_0 перед вызовом функции.
Другой вариант, который я рассмотрел, - сделать Entity_1 параметром метода GetEntity_2, однако любойв другой раз этот метод называется Entity_1 не будет нулевым, поэтому было бы избыточным требовать параметр.
Так что, очевидно, все работает прямо сейчас, но мой вопрос заключается в том, нарушаю ли я какое-либо правило разработки ООПили а) наличие метода, который может вызвать исключение нулевой ссылки, или б) указание параметра метода, который следует использовать только в некоторых случаях.
Необходимость вручную назначать свойство навигации действительно вызывает у меня проблемы.Я надеюсь, что у некоторых из вас есть предложения, как я могу улучшить это.
Спасибо!