DotMin.Sync 尝试过滤时不会给出错误,但会忽略过滤器

问题描述 投票:0回答:1

我正在使用一个非常有趣的包在 SQL Server 之间同步。

由于它很简单,“仅下载”,因此表现良好且快速。

现在我需要创建一个过滤器 - 类似于

FROM Table_Name 
WHERE tenantID = @myVariable

我正在关注此处的文档: https://dotmimsync.readthedocs.io/Filters.html

显然逻辑简单且完美,但我无法运行过滤器,它同步但不过滤

我有几个表,我想创建一个过滤器,其中

tenantID
列 (FK) 等于我的 GUID 变量值。

例如:

var setup = new SyncSetup("dbo.Tennants", "dbo.Devices", "dbo.Audios", et cetera...)

setup.Tables["dbo.Tennants"].SyncDirection = SyncDirection.DownloadOnly;
setup.Tables["dbo.Devices"].SyncDirection = SyncDirection.DownloadOnly;
setup.Tables["dbo.Audios"].SyncDirection = SyncDirection.DownloadOnly;

过滤器从这里开始:

var filterTenants = new SetupFilter("Tenants");
filterTenants.AddParameter("TenantId", DbType.Guid); 
filterTenants.AddWhere("TenantId", "Tenants", "TenantId");
setup.Filters.Add(filterTenants);

var filterDevices = new SetupFilter("Devices");
filterDevices.AddParameter("TenantId", DbType.Guid);
filterDevices.AddWhere("TenantId", "Devices", "TenantId");
setup.Filters.Add(filterDevices);

var filterAudios = new SetupFilter("Audios");
filterAudios.AddParameter("TenantId", DbType.Guid);
filterAudios.AddWhere("TenantId", "Audios", "TenantId");
setup.Filters.Add(filterAudios);

我已经尝试将 DbType.Guid 类型作为 TableName ("TenantId", "Audios");

发送

这里我为我的 C# 变量

TenantID
 定义了创建的参数 
_myTenantId

var parameters = new SyncParameters
{
    { "TenantId", _myTenantId }
};

最后我执行:

var result = await agent.SynchronizeAsync(setup, parameters, progress);

当然代码要大得多,错误处理等等,但我不相信这会影响它。

它同步所有

TenantID
,而不是我的变量
_myTenantId
中的那个。

我做了一个工作示例来测试这个问题

  • 创建 2 个 SQL Server 数据库(
    Master
    Local
  • 启用更改跟踪 通过
    tenantId
    通过随机数据创建种子
  • 创建种子
  • 通过 dotmin 按租户创建过滤器来运行同步数据库 它进行同步,但对于所有数据(随机和按租户),我希望本地数据库仅包含 TenantId == appSettings.jon

https://github.com/dorathoto/POC_DotMim.Sync.Sample

c# nuget
1个回答
0
投票

我发现您无法将架构名称与它一起发送。尽管文档中有说明。

而不是:

setup.Tables["dbo.Tennants"].SyncDirection = SyncDirection.DownloadOnly;

正确的是:

setup.Tables["Tennants"].SyncDirection = SyncDirection.DownloadOnly;

微妙,但是错误没有显示这一点,我通过作者自己的回答发现了它。

https://github.com/Mimetis/Dotmim.Sync/issues/1256

© www.soinside.com 2019 - 2024. All rights reserved.