6

我目前正忙于在我正在进行的项目中实施新的 Elastic Sc​​ale 技术。这项技术似乎解决了我们在设计新应用程序基础时遇到的一些复杂问题。

到目前为止,这些示例看起来很棒,我正忙于在我们新创建的 DAL 中实现它。

对于我们的应用程序,我们不能仅依赖 Azure 中的 Elastic Sc​​ale。该应用程序还必须能够在本地的单个实例机器上运行。因此,我创建了以下代码来查询运行良好的数据库,也可以使用 Elastic Sc​​ale。

public IEnumerable<AnEntity> All()
{
    var dbConnection = GetConnection();
    using (var context = new OurDatabaseContext(dbConnection))
    {
        var theEntities = context.EntityTable;
        return theEntities.ToArray();
    }
}
private IDbConnection GetConnection()
{
    var connectionInstance = connection[ConnectionStringNames.TheDatabase];
    var dbConnection = connectionInstance.Create();
    return dbConnection;
}

connectionInstance是通过 IoC 配置的,这将创建一个我们IDbConnection可以在OurDatabaseContext. 一切都非常简单。

我面临的主要问题是做一个MultiShardConnection,由 Elastic Sc​​ale 提供并在示例中实现。

所以我的问题是,是否可以将 aMultiShardConnection与数据库上下文一起使用(例如 LINQ2SQL(我们正在使用)或 EF 的上下文)。

如果不是,是唯一将 与MultiShardConnection结合使用的解决方案MultiShardCommand吗?或者这样的功能何时可用?

4

1 回答 1

1

正如我目前所知,没有简单的方法可以与 dbContext 建立多分片连接。

从示例来看,使用 MultiShardConnection + MultiShardCommand 非常简单。但是,并非所有方法都可用(例如 ReadAsync)。

但是,我认为可以通过使用正确的分片键(映射键)绕过大多数多分片连接。我通过向我的 ShardMapManager 添加一个分片键解决了我的问题。如果您想描述您需要 MultiShard Connection 的具体原因并编辑我的帖子。始终可以选择创建多个 dbContext。

于 2015-01-31T02:03:57.297 回答