我首先使用VS 2010與實體框架5代碼和C#並且有一個Web應用程序(因此爲斷開連接的實體)。我習慣於直接使用SQL查詢,但對於EF和代碼來說,這是非常新的。在EF5中添加/更新實體所需的模式(包括關係)
我有兩個類:
public class User
{
public int UserID {get; set;}
public string UserName { get; set; }
public bool IsSuspended { get; set; }
public int UnitID { get; set; }
public virtual MyTrust MyTrusts { get; set; }
}
public class MyTrust
{
public int MyTrustID { get; set; }
public string MyTrustName { get; set; }
public string Region { get; set; }
public bool DoNotUse { get; set; }
}
和我的DbContext類包含:
public DbSet<MyTrust> MyTrust { get; set; }
public DbSet<User> Users { get; set; }
modelBuilder.Entity<User>()
.HasRequired(m => m.MyTrust);
的MyTrust實體將不會改變 有三種情況我感興趣的是:
- 添加具有現有MyTrust的用戶
- 更新,而無需更改信任
- 更新與改變用戶的信賴
當網站返回MyTrust對象只有在MyTrustID集數據的用戶。當我更新/添加用戶時,MyTrust記錄也會更新。
CLARIFICATION User對象中的關係沒有更新;實際的MyTrust對象用從網站返回的數據進行更新;因爲大多數字段都是空的,這會破壞對象並且不能實現所需的用戶記錄更新。
事實上,問題似乎歸結爲關係的錯誤結局正在更新的事實。
我看了一些很多的例子,我看不到一個簡單的解決方案。
任何人都可以請建議一個簡單的模式(這是SQL天很容易)。
UPDATE 我通過向User和MyTrust類添加特定的鍵來解決這個問題。
public int NHSTrustID { get; set; }
和MyTrust類中的匹配鍵。
回想起來,這個問題是錯誤的。我沒有遵循模式,而是針對特定問題的解決方案。
嗨馬特,感謝您的快速響應。不幸的是,這並不能真正解決問題,因爲我想從更新中排除MyTrust對象。我只想更新用戶對象中的關係。請參閱上面的說明。 –
嗨,彼得 - 是用戶對MyTrust關係「一對一」還是「一對多」? –
嗨馬特 - 最終澄清。每個用戶必須有一個信任;任何信任都可能有用戶。 –