我有以下实体:
public class BaseEntity
{
[Key]
public long Id { get; set; }
}
public class Tenant : BaseEntity
{
public virtual Nullable<long> SQLDatabaseId { get; set; }
public virtual SQLDatabase SQLDatabase { get; set; }
public virtual Nullable<long> StorageAccountId { get; set; }
public virtual StorageAccount StorageAccount { get; set; }
}
public class SQLDatabase : BaseEntity
{
public virtual long TenantId { get; set; }
public virtual Tenant Tenant { get; set; }
}
public class StorageAccount : BaseEntity
{
public virtual long TenantId { get; set; }
public virtual Tenant Tenant { get; set; }
}
使用fulent API OnModelCreating
modelBuilder.Entity<SQLDatabase>()
.HasRequired(r => r.Tenant);
modelBuilder.Entity<StorageAccount>()
.HasRequired(r => r.Tenant);
现在,当我运行项目时,它以奇怪的方式创建数据库
它创建了一个从Tenant到SQLDatabase的一对一关系,这是可以的,但是当我在SSMS中看到这个关系时,这个关系是从Tenant.Id到SQLDatabase.Id
哪个不正确。租户对于创建SQL数据库和存储帐户是必需的,并且在任何一种情况下都是1:1的关系。
答案 0 :(得分:0)
您应指定 Principal 哪个 Dependent 。尝试下面的内容:
modelBuilder.Entity<SQLDatabase>()
.HasRequired(r => r.Tenant)
.WithRequiredDependent(m => m.SQLDatabase);
modelBuilder.Entity<StorageAccount>()
.HasRequired(r => r.Tenant)
.WithRequiredDependent(m => m.StorageAccount);