首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多租户和EF6设计

多租户和EF6设计
EN

Stack Overflow用户
提问于 2014-03-29 19:07:05
回答 1查看 266关注 0票数 1

我正在设计一个多租户网站使用EF6代码优先,MVC和其他从MS堆栈。

我希望每个租户都有公告。很简单,我的EF代码的第一个类应该是这样的:

代码语言:javascript
复制
class Announcement
{
    public Announcement()
    {
        DateCreated = DateTime.Now;
    }

    [Key]
    public int Id { get; set; }

    public DateTime DateCreated { get; set; }

    public string Title { get; set; }

    public string Message { get; set; }

    public virtual Tenant Tenant { get; set; }

    public ApplicationUser Author { get; set; }
}

我的设计问题是,如果我希望站点管理员能够向所有租户发布公告,该怎么办?

由于数据库将强制建立租户关系,因此我不能将租户属性设置为人工属性。

在EF之前,我会做这样的事情,但现在我将失去很好的EF导航属性。

代码语言:javascript
复制
class Announcement
{
    public Announcement()
    {
        DateCreated = DateTime.Now;
    }

    [Key]
    public int Id { get; set; }

    public DateTime DateCreated { get; set; }

    public string Title { get; set; }

    public string Message { get; set; }

    public int TenantID { get; set; }

    public ApplicationUser Author { get; set; }
}

对于所有基于租户的公告,我会适当地使用TenantID,但对于站点范围的公告,我会将其设置为0。

那么,有没有更好的设计(除了两个类/表)仍然可以利用EF导航属性呢?

EN

回答 1

Stack Overflow用户

发布于 2014-03-29 20:28:04

有什么问题吗?

代码语言:javascript
复制
class Announcement
{
    public Announcement()
    {
        DateCreated = DateTime.Now;
    }

[Key]
public virtual int Id { get; set; }

public virtual DateTime DateCreated { get; set; }

public virtual string Title { get; set; }

public virtual  string Message { get; set; }

public virtual  int TenantID { get; set; }  // during insert/Update set as required. the tenant should exist. 
                                            // A dummy SYSTEM wide tenant may be an option to consider

// navigation props
[ForeignKey("TenantID")]
public virtual Tenant Tenant { get; set; } // <<<<< NAV as before

public virtual ApplicationUser Author { get; set; }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22730270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档