我的特殊應用程序是一個使用實體框架的ASP.NET MVC應用程序。ASP.NET MVC/EF:我應該如何處理新實體的導航屬性?
我有一個對象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的方法都不會爲null,因此需要一個參數將是多餘的。
因此,顯然現在一切正常,但我的問題是我是否違反了一些OOP設計規則,或者a)具有可能拋出空引用異常的方法或b)指定只應該有些時候會用到它。
不得不手動分配導航屬性真的讓我感到困擾。我希望你們中的一些人對我如何改善這一點有一些建議。
謝謝!