我有一個對象User
,它引用了對象State
。外鍵是的string
,並且是可選的。用戶不需要參考State
。我定義的類如下如何在實體框架代碼中使用字符串主鍵加載子對象代碼優先?
public class User
{
public int UserID {get; set'}
public string StateID {get; set;}
//some other properties
public virtual State State {get; set;}
}
public class State
{
public string StateID {get; set;}
//other properties
public ICollection<User> Users {get; set;}
}
當我嘗試做一個LINQ查詢得到一些用戶和他們的國家,State
對象總是空。我確實得到了我的用戶的StateID,所以我知道設置正確。
我的查詢看起來是這樣的:
var users = userRepo.where(x => x.StateID != null);
也嘗試添加.ToList()
獲得延遲加載執行它也不管用。
我已經嘗試在State
中加入[key]
註釋,但沒有運氣。
我也試着放棄延遲加載和在我的查詢中使用include("State")
也沒有運氣。
任何線索,我做錯了什麼?
UPDATE 我也試圖明確指定映射如下:
modelBuilder.Entity<User>()
.HasOptional(t => t.State)
.WithMany(b => b.Users)
.HasForeignKey(t => t.StateID);
您能否顯示您的模型配置?你在哪裏設定這兩個班級之間有關係?你是否嘗試使用Include(x => x.State)? –
SQL日誌記錄是否顯示對「State」表的任何訪問? –
@Get Arnold不,我沒有看到SQL輸出中的狀態表的任何連接。思考? – stephen776