实体框架子实体的唯一属性

时间:2016-09-21 10:32:39

标签: c# entity-framework entity-framework-6

我使用的模型类似于流行的Blog / Post EntityFramework示例:

public class Blog 
{ 
    public int BlogId { get; set; } 
    public string Name { get; set; } 

    public virtual List<Post> Posts { get; set; } 
} 

public class Post 
{ 
    public int PostId { get; set; } 
    public string Title { get; set; } 
    public string Content { get; set; } 

    public int BlogId { get; set; } 
    public virtual Blog Blog { get; set; } 
}

我需要让Post.Title在每个博客中都是唯一的。 现在,我有

protected override DbEntityValidationResult ValidateEntity

这里我需要实现逻辑来检查重复,这是不明显的,因为我需要检查DB中的Posts.Local和Posts,逻辑依赖于entityEntry.Status。这是实现此限制的唯一可行方法,还是存在一些更优雅的解决方案?

1 个答案:

答案 0 :(得分:0)

如何在它们上添加唯一索引:

[Index("IdAndTitle", 1, IsUnique = true)]
public string Title { get; set; }

[Index("IdAndTitle", 2]
public int BlogId { get; set; }