初學者問題在這裏。鑑於以下內容:EF代碼中的靜態對象和種子數據 - 首先
public static Tenant Www = new Tenant() { TenantId = 1, Name = "www", Urls = new string[]{"https://app.com"}};
我有定義參數的對象的引用。在這種情況下,是否假定具有這些值的對象存在於數據庫中?
我種方法包括以下內容:
if (context.Tenants.FirstOrDefault(s => s.Name == "Www") == null) {
context.Tenants.Add(new Tenant() {
TenantId = 1,
Name = "Www",
Urls = new string[]{"https://app.com", "http://localhost"}
});
}
注意,從我的種子法租戶包含一個額外Url
。我對通過Tenant.Www
查詢時使用哪個版本感到困惑。
如果我通過類似obj.TenantId = Tenant.Www.TenantId
的東西使用靜態方法,我知道只有Id被使用了,但是如果我做了類似obj.Tenants.push(Tenant.Www)
的事情呢?哪一個被使用,爲什麼?
謝謝丹尼斯。如果我只是爲了快捷方式而試圖使用靜態類,那麼定義只有TenantId定義的Tenant實例是否安全,因此我總是可以通過Tenant分配關係.Www.TenantId?或者你會建議總是執行FirstOrDefault查詢以確保安全嗎? – SB2055
請在您的問題背景下定義「安全」。你想要什麼這個靜態實例? – Dennis
使用我的id定義的方法,我應該害怕分配空的或陳舊的Tenant對象,因爲我應該執行像push(Tenant.Www)或Add(Tenant.Www)這樣的操作。例如:假設靜態Tenant.Www只定義了一個Id,並且在Add()操作中使用它,是否會創建另一個Tenant,因爲EF無法找到完全匹配?或者是否會使用匹配Id的Seed()的Tenant,因爲EF只關心PK? – SB2055