1
我有一個經典的一對多關係,除了「多」一側的每個項目都沒有「one」之外。這裏是我的表:首先在EF代碼中的非零多到零或一個關係?
會議:
ID IP
1 1.1.1.1
2 2.2.2.2
USERS:
IP NAME
1.1.1.1 John
...從以下POCO的產生:
public class Session {
public int id { get; set; }
public long ip { get; set; }
}
public class User {
[Key]
public long ip { get; set; }
public string name { get; set; }
public ICollection<Session> sessions { get; set; }
}
一些會話有一個相應的用戶(通過IP)。即使沒有關聯的用戶,我也想保留IP,並且能夠導航User.sessions。
有了上面的POCO,EF可以理解地從Session.ip
到User.ip
生成一個FK,從而阻止我插入帶有與用戶不相關的IP的Sessions。使Session.ip
爲空可以允許我插入與用戶無關的會話,但是我失去了IP(它必須爲空)。
有什麼辦法可以達到這個目的嗎?
萬分感謝。
謝謝。我也考慮過這個解決方法,但想知道是否有根本的解決方案。我的會話表很大(每天1GB以上的新數據),而且我不想存儲不必要的列,並且出於性能原因嘗試避免使用空值。 – daniellm
你嘗試過在你重寫OnModelCreating的DbContext ......我想你可以刪除外鍵(modelBuilder.Entity().HasMany(X => x.sessions).WithOptional()) } –
JasonD
不,有與將Session.ip定義爲可爲空相同,即它生成的FK必須爲null或指向有效的用戶,但不能指向不存在的用戶。 – daniellm