假设我有一个班级:
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)。 有可能吗?
答案 0 :(得分:1)
使用UniqueConstraints捆绑包:
public class Person
{
public string Name {get;set;}
[UniqueConstraint]
public string Email {get;set;}
public string GoogleId {get;set;}
public string FacebookId {get;set;}
[UniqueConstraint]
public string GoogleAndFacebookIds { get;set; }
}
每次更新GoogleAndFacebookIds
或GoogleId
时,请确保更新FacebookId
。我这么做了这么多,我最后在我的所有类上使用了一个简单的界面来做这种事情:
public interface ICombinedConstraints
{
string UniqueId { get; set; }
void UpdateConstraints();
}
所以,
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;
}
}
答案 1 :(得分:0)
你做不到。 Raven没有提供对财产实施独特限制的任何可能性。如果你想这样做,你需要单独的文件集(见下面的链接)
更新
您似乎也可以尝试使用bundle在对象中实现唯一约束。