Entity Framework, 关系
Entity Framework, Relationship
我有以下实体:
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; }
}
并且在 OnModelCreating 中 API
modelBuilder.Entity<SQLDatabase>()
.HasRequired(r => r.Tenant);
modelBuilder.Entity<StorageAccount>()
.HasRequired(r => r.Tenant);
现在当我运行项目时,它以奇怪的方式创建数据库
它创建了从租户到 SQL 数据库的一对一关系,这没问题,但是当我在 SSMS 中看到它时,这种关系是从 Tenant.Id 到 SQLDatabase.Id
这不是真的。必须有租户才能创建 SQL 数据库和存储帐户,并且在任何一种情况下关系都是 1:1。
您应该指定哪个是 Principal,哪个是 Dependent。尝试以下:
modelBuilder.Entity<SQLDatabase>()
.HasRequired(r => r.Tenant)
.WithRequiredDependent(m => m.SQLDatabase);
modelBuilder.Entity<StorageAccount>()
.HasRequired(r => r.Tenant)
.WithRequiredDependent(m => m.StorageAccount);
我有以下实体:
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; }
}
并且在 OnModelCreating 中 API
modelBuilder.Entity<SQLDatabase>()
.HasRequired(r => r.Tenant);
modelBuilder.Entity<StorageAccount>()
.HasRequired(r => r.Tenant);
现在当我运行项目时,它以奇怪的方式创建数据库
它创建了从租户到 SQL 数据库的一对一关系,这没问题,但是当我在 SSMS 中看到它时,这种关系是从 Tenant.Id 到 SQLDatabase.Id
这不是真的。必须有租户才能创建 SQL 数据库和存储帐户,并且在任何一种情况下关系都是 1:1。
您应该指定哪个是 Principal,哪个是 Dependent。尝试以下:
modelBuilder.Entity<SQLDatabase>()
.HasRequired(r => r.Tenant)
.WithRequiredDependent(m => m.SQLDatabase);
modelBuilder.Entity<StorageAccount>()
.HasRequired(r => r.Tenant)
.WithRequiredDependent(m => m.StorageAccount);