我正在使用RavenDb Server和Client 3.5.0,我试图使UniqueConstraint工作没有成功 .
简单的案例:
using Raven.Client.UniqueConstraints;
public class User {
public string Id { get; set; }
[UniqueConstraint]
public string Email { get; set; }
}
文件说:
在Plugins目录中删除Raven.Bundles.UniqueContraints程序集 .
我是由NuGet做的: Install-Package RavenDB.Bundles.UniqueConstraints -Version 3.5.0
然后将二进制文件Raven.Bundles.UniqueConstraints.dll粘贴到我在Raven根目录下创建的文件夹插件中 .
保存用户文档后,我在元数据中得到了这个:
"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和其他许多人没有解决方案有同样的问题 . 在某些情况下,他们说正在检查该属性是否已作为解决方案手动存在于数据库中 .
文件还说:
要在服务器范围内激活唯一约束,只需在全局配置文件中为Raven / ActiveBundles配置添加Unique Constraints,或者使用API或Studio启用唯一约束捆绑包来设置新数据库
但不知道如何做到这一点 . 我做了一些搜索并找到了可能的方法:在Studio中,选择数据库,转到设置 - >数据库设置,我找到了这个配置:
{
"Id": "TestRaven",
"Settings": {
"Raven/DataDir": "~\\TestRaven"
},
"SecuredSettings": {},
"Disabled": false
}
我尝试添加此配置:
"Settings": {
"Raven/DataDir": "~\\TestRaven",
"Raven/ActiveBundles": "UniqueConstraints"
}
然后我在尝试保存时遇到错误 . 消息erros说"the database is already created and cant modify or add bundles"之类的东西,并添加此行 "Raven-Temp-Allow-Bundles-Change": true
,我能够使用UniqueConstraint捆绑配置保存de设置 .
到目前为止,我认为我完成了文档描述的所有要求 . 最后一个是:
即使相关程序集位于Plugins目录中,任何未添加到ActiveBundles列表的bundle也不会处于活动状态 .
我找到捆绑列表的唯一地方是在Studio中创建新数据库,但列表不可编辑,只是有关已启用的信息 .
文档说明了许多要求,但只是不告诉我们如何做到这一点,超级聪明,我们必须尝试gess如何 . 到目前为止我可以到这里,但是gess是什么?它仍然无法正常工作!
我的问题是,UniqueConstraints真的在RavenDb中工作吗?有人让这个工作吗?
如果有, Cloud 请告诉我怎么样?
先感谢您!
[编辑]我忘了提到我添加了以下行:
store.Listeners.RegisterListener(new UniqueConstraintsStoreListener());
并且还尝试使用3.5.1版 .
1 回答
问题是捆绑包的指定名称不正确,因此它在服务器端不会处于活动状态 . 请在
"Raven/ActiveBundles"
设置选项中使用"Unique Constraints"
而不是"UniqueConstraints"
.