0

我正在使用具有代码优先方法的实体框架来生成数据库。我在 SQL Server 中引入了行级安全性。

我想创建 3 个表,所有常见的属性都在其中,ItemVersion并记录相关属性DocumentVersion并形成与FormVersion某某相关的事物。我应该TenantId在所有 3 个表中引入行级安全列。

interface ITenantSecurityPolicy
{
    int TenantId { get; set; }
}

public class ItemVersion : ITenantSecurityPolicy
{
    public int Id { get; set; }
    public int CreatedPersonId { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public int TenantId { get; set; }
}

[Table("DocumentVersions")]
public class DocumentVersion : ItemVersion
{
    [StringLength(100)]
    public string DocumentVersionNumber { get; set; }
    public int FileId { get; set; }
}

[Table("FormVersions")]
public class FormVersion : ItemVersion
{
    public string DesignerContentId { get; set; }
}

当我生成数据库时,它不会创建TenantId子类 - 该列TenantId仅在ItemVersion表中创建。

我该如何处理这种情况?有什么解决方法或建议吗?

4

1 回答 1

0

最简单的解决方案也可能是多租户模式的正确关系设计:使 TenantId 成为主键中的前导列。

public class ItemVersion : ITenantSecurityPolicy
{
    [Key,Column(Order=0)]
    public int TenantId { get; set; }
    [Key,Column(Order=1),DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public int CreatedPersonId { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }

}
于 2018-01-05T11:09:04.727 回答