我正在设计一个多租户网站使用EF6代码优先,MVC和其他从MS堆栈。
我希望每个租户都有公告。很简单,我的EF代码的第一个类应该是这样的:
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导航属性。
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导航属性呢?
发布于 2014-03-29 20:28:04
有什么问题吗?
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; }
}https://stackoverflow.com/questions/22730270
复制相似问题