gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:54:35 24 4
gpt4 key购买 nike

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

该问题和解决方法适用于 HasAlternateKeyHasIndex。该解决方案构建良好,但在创建迁移时会忽略约束,直到影子属性转换为域类中的真实属性。

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

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

与通常的影子属性一样,您应该使用相应 Fluent API 的 string 重载通过名称来引用它们。

就您而言:

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

关于c# - EF Core - 唯一约束,包括迁移中未检测到的导航属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56518114/

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