Ste*_*Kok 2 c# entity-framework-migrations ef-core-2.2
我正在尝试应用唯一的复合约束,约束的一部分是外键。我似乎让它工作的唯一方法是在我的域类中显式定义外键,这是我想避免的。这可能吗?
该问题和解决方法适用于HasAlternateKey和HasIndex。该解决方案构建良好,但在创建迁移时会忽略约束,直到影子属性转换为域类中的真实属性。
这不起作用(迁移会忽略这一点):
entity.HasAlternateKey(e => new { e.Header.Id, e.Version, e.StartDate });
Run Code Online (Sandbox Code Playgroud)
将影子属性 HeaderID 转换为真实属性后,这确实有效:
entity.HasAlternateKey(e => new { e.HeaderId, e.Version, e.StartDate });
entity.HasOne(e => e.Header).WithMany().HasForeignKey(f => f.HeaderId);
Run Code Online (Sandbox Code Playgroud)
Fluent API 不支持嵌套属性表达式,例如e.Header.Id.
与通常的影子属性一样,您应该使用相应 Fluent API 的重载按名称引用它们。string
在你的情况下:
entity.HasAlternateKey("HeaderId", "Version", "StartDate");
entity.HasOne(e => e.Header).WithMany().HasForeignKey("HeaderId");
Run Code Online (Sandbox Code Playgroud)