我正在使用RavenDb服務器和客戶端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配置全球 配置文件中,或設置一個新的數據庫捆綁打開使用API或工作室
但沒有線索如何做到這一點。我做了一些搜索,找到一個可能的方法如下: 在Studio中,選擇數據庫,進入設置 - >數據庫設置,我發現這個配置:
{
"Id": "TestRaven",
"Settings": {
"Raven/DataDir": "~\\TestRaven"
},
"SecuredSettings": {},
"Disabled": false
}
,我嘗試添加該配置:
"Settings": {
"Raven/DataDir": "~\\TestRaven",
"Raven/ActiveBundles": "UniqueConstraints"
}
然後在嘗試保存時出現錯誤。消息錯誤表示類似於「數據庫已創建並且無法修改或添加捆綁包」,並進行消減以添加此行"Raven-Temp-Allow-Bundles-Change": true
,並且我能夠使用UniqueConstraint包配置保存de設置。
到目前爲止,我認爲我確實需要文檔描述。最後一個是:
不添加到ActiveBundles列表中的任何包,將不會 活躍,即使相關組件在Plugins目錄。
我發現捆綁列表的唯一地方是在Studio中創建新數據庫,但該列表不可編輯,只是關於已啓用的信息。
該文件說明了很多要求,但只是不告訴我們該怎麼做,超級聰明,我們必須嘗試如何。到目前爲止,我可以到達這裏,但是什麼?它仍然不工作!
我的問題是,UniqueConstraints真的在RavenDb中工作?有人得到這個工作?
如果是,雲請告訴我怎麼做?
預先感謝您!
[編輯] 我忘了提,我添加了如下一行:
store.Listeners.RegisterListener(new UniqueConstraintsStoreListener());
而且也試圖與3.5.1版本。