gpt4 book ai didi

c# - Entity Framework 中唯一字段的选项 - dbSet 的导航属性?

转载 作者:行者123 更新时间:2023-11-30 16:20:18 24 4
gpt4 key购买 nike

经过大量研究,Entity Framework 4.4 似乎不支持 Unique 约束。是的,它可以而且应该在数据库中完成,但我更希望它发生在模型验证中,这样对用户的警告更漂亮。

对于程序员来说,能够用 [Unique] 属性装饰属性是理想的,并且应该可以通过某种方式实现,例如:

public class UserGroup
{

public int UserGroupID { get; set; }

[Required]
[Unique]
public string Name { get; set; }

[Required]
public string Description { get; set; }

}

我正在考虑的选项:

1) 让存储库在 SaveChanges() 中做一些额外的工作,扫描已修改实体的 [Unique] 属性并访问数据库以检查唯一性。缺点:此验证仅在我们调用 SaveChanges() 时发生,理想情况下它可以更早发生(例如,当 UI 控件验证时)。

2) 给 UserGroup 模型一个延迟加载的导航属性给 AllUserGroups:

public virtual ICollection<UserGroup> AllUserGroups { get; set; }

然后编写 UniqueAttribute{} 以扫描此属性并检查值等。

问题:如何配置 Entity Framework (代码优先)将所有记录加载到这个“导航属性”?它似乎只需要带有外键等的导航属性,而我只需要它们。

3) 在 UI 中手动编写此验证代码 - 糟糕且绝对是最后的手段。

问题:是否有更好的选择来通过模型级别的验证来强制执行唯一约束?

问候,-布伦丹

最佳答案

关于c# - Entity Framework 中唯一字段的选项 - dbSet 的导航属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14368937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com