初学者问题在这里。鉴于以下内容: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