EF Core - 迁移中未检测到包括导航 属性 在内的唯一约束

EF Core - Unique constraint including navigation property not detected in migration

我正在尝试应用唯一的复合约束,约束的一部分是外键。我似乎可以让它工作的唯一方法是在我的域 class 中明确定义外键,我想避免这种情况。这可能吗?

此问题和解决方法适用于 HasAlternateKeyHasIndex。解决方案构建良好,但在创建迁移时忽略约束,直到影子 属性 在域 class.

中变成真实的 属性

这不起作用(迁移会忽略它):

entity.HasAlternateKey(e => new { e.Header.Id, e.Version, e.StartDate });

这在将影子 属性 HeaderID 变成真实的之后确实有效:

entity.HasAlternateKey(e => new { e.HeaderId, e.Version, e.StartDate });
entity.HasOne(e => e.Header).WithMany().HasForeignKey(f => f.HeaderId);

Fluent API 不支持嵌套 属性 表达式,例如 e.Header.Id.

与影子属性一样,您应该通过 name 使用相应的 fluent API.[=13= 的 string 重载来引用它们]

你的情况:

entity.HasAlternateKey("HeaderId", "Version", "StartDate");
entity.HasOne(e => e.Header).WithMany().HasForeignKey("HeaderId");