DotMin.Sync при попытке фильтровать не выдает ошибку а игнорирует фильтрC#

Место общения программистов C#
Ответить
Anonymous
 DotMin.Sync при попытке фильтровать не выдает ошибку а игнорирует фильтр

Сообщение Anonymous »

Я использую очень интересный пакет для синхронизации между SQL Server.
Поскольку это что-то простое, «Только загрузка», он работает хорошо и быстро.
Теперь мне нужно создать фильтр — что-то вроде

Код: Выделить всё

FROM Table_Name
WHERE tenantID = @myVariable
Я следую документации здесь:
https://dotmimsync.readthedocs.io/Filters.html
Очевидно логика простой и идеальный, но я не могу запустить фильтр, он синхронизируется, но не фильтрует
У меня есть несколько таблиц, и я хочу создать фильтр, в котором идентификатор клиента столбец (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 в качестве имени таблицы ("TenantId", "Audios");< /p>
Здесь я определяю созданный параметр TenantID для моей переменной C# _myTenantId

Код: Выделить всё

var parameters = new SyncParameters
{
{ "TenantId", _myTenantId }
};
и в конце выполняю:

Код: Выделить всё

var result = await agent.SynchronizeAsync(setup, parameters, progress);
Конечно код намного больше, обработка ошибок и т.д., но я не верю, что это на это влияет.
Он все синхронизирует TenantID, а не тот, что в моей переменной _myTenantId.
Я сделал рабочий пример, чтобы проверить эту проблему
  • Создать 2 базы данных MSSQL (главную и локальную)
  • Включить отслеживание изменений Создать начальное значение по tennantId Создать начальное значение по случайным данным.
    Запустите базу данных синхронизации с помощью Dotmin, создав фильтр по тенанту.
    Он выполняет синхронизацию, но со всеми данными (случайными и по теннанту). Я хотел, чтобы локальная база данных имела только по TennantId == appSettings.jon
https://github.com/dorathoto/POC_DotMim.Sync.Sample

Подробнее здесь: https://stackoverflow.com/questions/790 ... s-the-filt
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»