【发布时间】:2018-04-06 13:11:10
【问题描述】:
我正在尝试向我的“UserAccount”实体/类的“用户名”属性添加一个 UNIQUE 约束。使用代码优先,这没有问题,但对于模型优先,我找不到任何关于如何实现这一点的信息。 设计器不支持此功能。我不能使用注释,因为实体类是自动生成的。我不能使用 Fluent API,因为 OnModelCreating() 方法没有在模型优先中调用,因此我没有 DbModelBuilder 实例。 我唯一能想到的就是在应用程序启动时执行某种手动 SQL 语句来创建 UNIQUE 约束,这违背了 EF 的目的。 这是我当前的 DbContext 类:
public partial class UserAccountsModelContainer : DbContext
{
public UserAccountsModelContainer()
: base("name=UserAccountsModelContainer")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<UserAccount> UserAccounts { get; set; }
}
我什至不会费心发布 UserAccount 类,因为它是自动生成的,不应该修改(我知道 DbContext 也是自动生成的,但可以修改它) . 对此的任何帮助表示赞赏!
【问题讨论】:
-
让我们面对现实吧……模型优先正在死去,取而代之的是代码优先。如果您真的很幸运,有人会提出或多或少可行的解决方案,但请仔细考虑您是否可以为您的项目摆脱模型优先。
-
已经开始了 ;) 我简直不敢相信这样一个简单的任务从未集成到模型优先中。
标签: entity-framework unique-constraint ef-model-first