实体框架4,SQL Azure,每个客户一个数据库还是表的前缀?

| 我们希望将数据库迁移到SQL Azure,但是由于Azure的定价模型与SQL 2k8R2的定价模型不同(显然),因此我们需要重新考虑数据库的结构。目前的结构是每个客户一个数据库,但是使用Azure,即使我们可能只使用容量的一小部分(在10MB范围内),我们也需要为每个数据库付费。这对我们来说是个问题。最简单的解决方案是在模型中的每个表前面加上客户唯一标识符。无论如何,是否需要在运行时更改映射,还是这种情况不适用于Azure? 几周前,我问了一个类似的问题,但并不完全相同: 使用Entity Framework 4在运行时更改表名 编辑:我在SQL Azure中尝试了联盟,但是它似乎还没有生效。我想出的解决方案是在一个数据库中拥有多个客户,并支持分区。现在,我们的存储库将使用已经包含Where-func的IQueryables来为特定客户分离实体:
public IQueryable<TestEntity> 
{ 
   get 
   { 
      return _ctx.Set<TestEntity>().Where(entity => entity.CustomerId == _customerId); 
   }
}
已邀请:
您可以考虑使用架构。 为每个客户创建: -服务器上的登录名 -映射到此登录名的用户 -此用户拥有的架构 -并且您将架构定义为用户的默认架构 如果不使用[schema]。[objectname]表示法,而仅使用[objectname]表示法,则将使用默认模式。 当然不是完美的解决方案,但它应该可以工作。

要回复问题请先登录注册