RavenDb中单个文档的几个唯一约束
假设我有一门课:RavenDb中单个文档的几个唯一约束,ravendb,ravendb-studio,Ravendb,Ravendb Studio,假设我有一门课: public class Person { public string Name{get;set;} public string Email {get;set;} public string GoogleId {get;set;} public string FacebookId {get;set;} } 如果我想使电子邮件唯一,我将使用唯一约束捆绑包 但是我想将googleId和facebookId属性作为一个唯一的约束,与电子邮件约束并排设置(其中
public class Person
{
public string Name{get;set;}
public string Email {get;set;}
public string GoogleId {get;set;}
public string FacebookId {get;set;}
}
如果我想使电子邮件唯一,我将使用唯一约束捆绑包
但是我想将googleId和facebookId属性作为一个唯一的约束,与电子邮件约束并排设置(其中没有一个是id)。
有可能吗?你不能那样做。Raven不提供对属性强制实施唯一约束的任何可能性。如果您想这样做,您需要单独的文档集(请参阅下面的链接) 更新: 您似乎还可以尝试使用bundle在对象中实现唯一的约束
你不能那样做。Raven不提供对属性强制实施唯一约束的任何可能性。如果您想这样做,您需要单独的文档集(请参阅下面的链接) 更新: 您似乎还可以尝试使用bundle在对象中实现唯一的约束 使用捆绑包: 只要确保每次更新
GoogleId
或FacebookId
时都更新GoogleAndFaceBookID
。我做了这么多,结果在我所有的类上都使用了一个简单的接口来做这类事情:
public interface ICombinedConstraints
{
string UniqueId { get; set; }
void UpdateConstraints();
}
所以
使用捆绑包:
只要确保每次更新GoogleId
或FacebookId
时都更新GoogleAndFaceBookID
。我做了这么多,结果在我所有的类上都使用了一个简单的接口来做这类事情:
public interface ICombinedConstraints
{
string UniqueId { get; set; }
void UpdateConstraints();
}
所以
换句话说,没有两个记录可以有相同的电子邮件。两个记录可以有相同的GoogleId和FacebookId,但不能有相同的组合?是的。假设这两个实体将违反唯一的约束:新人(“John”1@a.com“googleId1”、“facebookId1”)新人(“Avi”2@a.com“,”谷歌ID1“,”facebook ID1“);但对所有3个设置唯一约束是行不通的,因为电子邮件本身始终是唯一的项目,对吗?是的。电子邮件和其他两个属性都是唯一约束。我总共有两个唯一约束-一个在电子邮件上,另一个在googleId+facebookId上。主要问题是如何对googleId+f设置唯一约束acebookId?换句话说,没有两个记录可以有相同的电子邮件。两个记录可以有相同的GoogleId和FacebookId,但不能有相同的组合?是的。假设这两个实体将违反唯一约束:新人(“John”1@a.com“googleId1”、“facebookId1”)新人(“Avi”2@a.com“,”谷歌ID1“,”facebook ID1“;但是对所有三个设置一个唯一的约束是行不通的,因为电子邮件本身总是一个唯一的项目,对吗?是的。电子邮件和其他两个属性都是唯一的约束。总的来说,我有两个独特的限制——一个在电子邮件上,另一个在googleId+facebookId上。主要问题是如何对googleId+facebookId设置唯一约束?
public class Person : ICombinedConstraints
{
public string Name{get;set;}
[UniqueConstraint]
public string Email {get;set;}
public string GoogleId {get;set;}
public string FacebookId {get;set;}
[UniqueConstraint]
public string UniqueId { get; set; }
public void UpdateConstraints()
{
UniqueId = GoogleId + FacebookId;
}
}