【发布时间】:2022-01-04 00:16:01
【问题描述】:
我之前使用数据注释验证,现在我想更改 Fluent Validation。 因为现在我们将项目更改为干净的架构。
当我从邮递员发送数据时,请求进入异常。
System.InvalidOperationException:属性“X.Overview”属于“XOverview”类型,当前数据库提供程序不支持。更改属性 CLR 类型,或使用“[NotMapped]”属性或使用“OnModelCreating”中的“EntityTypeBuilder.Ignore”忽略该属性。
使用数据注解验证时
域 X.cs
public class X
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public XOverview Overview { get; set; }
}
public class XOverview
{
[Required]
public int Id { get; set; }
[Required]
public string Content { get; set; }
}
在 DbConext.cs 中
public DbSet<XOverview> XOverview { get; set; }
// removed the rest
以上工作正常。
现在我想改成 fluent 验证。
使用流畅验证时
域 X.cs
public class X
{
public XOverview Overview { get; set; }
}
public class XOverview
{
public int Id { get; set; }
public string Content { get; set; }
}
// X 的流利验证
public class XConfiguration : IEntityTypeConfiguration<x>
{
public void Configure(EntityTypeBuilder<x> builder)
{
builder.HasKey(i => i.Id);
builder.Property(i =>i.Overview)
.IsRequired();
}
}
public class XOverviewConfiguration : IEntityTypeConfiguration<XOverview>
{
public void Configure(EntityTypeBuilder<XOverview> builder)
{
builder.Property(i =>i.Id)
.IsRequired();
builder.Property(i =>i.Content)
.IsRequired();
}
}
更改为流利验证时我犯了什么错误? 请帮助查找问题。
【问题讨论】:
-
错误出现在哪里?你可以调试它。根据这篇文章:github.com/dotnet/efcore/issues/24037
-
当我在调试控制台中从邮递员发送请求时出现错误。你的建议是一对多的关系。我的是一对一的关系。 XOverview 是另一个表。创建新X时,会自动生成一个新的XOverview