Я использую RavenDb Server и Client 3.5.0, и я попытался получить работу UniqueConstraint без успеха.RavenDb UniqueConstraint не работает
Простой случай:
using Raven.Client.UniqueConstraints;
public class User {
public string Id { get; set; }
[UniqueConstraint]
public string Email { get; set; }
}
В документации сказано:
Отбросьте сборки Raven.Bundles.UniqueContraints в каталоге плагинов .
Я сделал это NuGet: Install-Package RavenDB.Bundles.UniqueConstraints -Version 3.5.0
, а затем вставьте двоичный Raven.Bundles.UniqueConstraints.dll в папку плагинов, которые я создал сам в корневом каталоге Ворона.
После сохранения документа пользователя я получаю это в метаданных:
"Ensure-Unique-Constraints": [
{
"Name": "Email",
"CaseInsensitive": false
}
]
Все, кажется, работает, но я до сих пор сохранение документов с одинаковым адресом.
UniqueConstraintCheckResult<User> checkResult = session.CheckForUniqueConstraints(user);
// returns whether its constraints are available
if (checkResult.ConstraintsAreFree())
{
session.Store(user);
session.SaveChanges();
}
проверить эту ссылку RavenDB UniqueConstraint doesn't seem to work и это один https://groups.google.com/forum/#!searchin/ravendb/unique|sort:relevance/ravendb/KzO-eIf9vV0/NJyJ4DNniFUJ и многие другие, что люди имеют те же проблемы без решения. В некоторых случаях они сказали, что проверяют, существует ли свойство в базе данных в качестве решения.
Документация также говорит:
Чтобы активировать уникальные ограничения для всего сервера, просто добавьте уникальные Ограничения в конфигурации/ActiveBundles Raven в глобальном файле конфигурации или установки новой базы данных с уникальными ограничениями пучок включен с использованием API или Studio
но без подсказки, как это сделать. Я сделал некоторый поиск и найти можно как-: в студии, выберите базу данных, перейдите в меню Настройки -> Настройки базы данных, и я нашел этот конфиг:
{
"Id": "TestRaven",
"Settings": {
"Raven/DataDir": "~\\TestRaven"
},
"SecuredSettings": {},
"Disabled": false
}
и я попытался добавить этот конфиг:
"Settings": {
"Raven/DataDir": "~\\TestRaven",
"Raven/ActiveBundles": "UniqueConstraints"
}
Затем я получаю сообщение об ошибке при попытке сохранить его. В сообщении erros говорится о том, что «база данных уже создана и не может изменить или добавить пакеты» и сделать предложение, чтобы добавить эту строку "Raven-Temp-Allow-Bundles-Change": true
, и я смог сохранить настройки с помощью конфигурации узла UniqueConstraint.
До сих пор я думаю, что я выполнил все требования, описанные в документации. Последний из них является:
Любой пакет, который не был добавлен в список ActiveBundles, не будет активным, даже если соответствующая сборка находится в каталоге плагинов.
Единственное место, где я нашел список пакетов, это создание новой базы данных в Studio, но список не редактируется, а только информация о том, что уже включено.
В документации написано много требований, но просто не рассказывайте нам, как это сделать, супер умный, и мы должны попробовать gess как. До сих пор я мог добраться сюда, но что? Он все еще не работает!
Мой вопрос в том, что UniqueConstraints действительно работает в RavenDb? Попросите кого-нибудь получить эту работу?
Если да, облако, пожалуйста, скажите мне, как?
Спасибо заранее!
[Изменено] Я забыл упомянуть, что я добавил последующие строки:
store.Listeners.RegisterListener(new UniqueConstraintsStoreListener());
А также попытался с версии 3.5.1.