給定以下兩個表示數據庫中表的類,我想將MyClass的statustype設置爲StatusType DB中兩個預定義值之一。如何更新另一個對象內的複雜對象的值?
public class MyClass
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
[DataType(DataType.MultilineText)]
public string Description { get; set; }
public virtual StatusType StatusType { get; set; }
}
public class StatusType
{
public int Id { get; set; }
public virtual ICollection<MyClass> MyClasses{ get; set; }
DataType(DataType.MultilineText)]
public string Description { get; set; }
}
還有第三個表(MyClass_StatusType),它不是由一個充當多對一中介的實體來表示的。
我的代碼:
MyClass mc = new MyClass();
mc.Description = "Description";
mc.StatusType.Id = 3;
db.MyClasses.Add(mc);
var id = db.SaveChanges();
有一個在我的StatusType記錄與3的ID當我運行這段代碼我上StatusType一個空引用異常。
什麼是在MyClass中設置此值的正確方法?
您在這裏忽略了EF FK Convention,這會導致您有額外的SQL數據庫以及更多代碼。 'MyMethodToGetExistingStatusType(3)'完全不需要。 – James
是的,這是正確的,MyMethodToGetExistingStatusType()方法根本不需要,但它只是爲了澄清,他可以到達那裏他的對象。 你是對的。如果他有FK,我也會建議使用FK,但由於某種原因,他沒有這個FK。 我會將此添加到我的答案中,以便爲其他人清楚。 – user3840692