我有两个类,User和Follow,我为同一个类创建了两个关系,但我需要约束这对外键的唯一性。
我已经尝试添加索引,但它不起作用,索引没有添加到迁移代码中,我认为这是因为User和FollowUser是虚拟的。
如何在一对虚拟外键上添加唯一性?
提前致谢。
注意:我正在使用Azure移动应用服务,并自动添加主键字段。
public class Following : EntityData
{
[Index("IX_FriendshipUniqueness", 1, IsUnique = true)]
public virtual User User { get; set; }
[Index("IX_FriendshipUniqueness", 2, IsUnique = true)]
public virtual User FollowingUser { get; set; }
[StringLength(10)]
public string Status { get; set; }
}
public class User : EntityData
{
public User()
{
this.Followings = new HashSet<Following>();
this.Followers = new HashSet<Following>();
}
[InverseProperty("User")]
public virtual ICollection<Following> Followings { get; set; }
[InverseProperty("FollowingUser")]
public virtual ICollection<Following> Followers { get; set; }
}
答案 0 :(得分:1)
请阅读我几天前写的关系建议栏 - 它有助于了解如何限制Azure移动应用程序请求:https://shellmonger.com/2016/05/27/30-days-of-zumo-v2-azure-mobile-apps-day-26-relationship-advice/
简短版本 - 尽管EF6允许这样的约束(我并不是说它确实如此 - 我不是那样进入EF做出明确的声明),Azure移动应用程序不提供执行这些约束的能力。它需要在您的客户端代码中强制执行。