我有一个代码优先的EF Core模型。有些列使用HasMaxLength(X)
流利的语法来限制这些列的长度。目前,这些限制仅由数据库强制执行,当字符串变长时,我想在访问数据库之前先进行查找。
流利的配置示例:
modelBuilder.Entity<SomeEntity>(entity =>
{
entity.Property(p => p.SomeStringProperty)
.HasMaxLength(200);
});
现在,当我只有一个DBContext时,我想在运行时重新获得
HasMaxLength
值。那是possilbe吗?考虑以下内容:
ctx.Set<SomeEntity>.SomeStringProperty.MaxLength()
。 最佳答案
考虑以下内容:ctx.Set<SomeEntity>.SomeStringProperty.MaxLength()
几乎。您需要使用EF Core模型元数据服务来代替DbSet<T>
,先使用Context.Model
属性,然后使用FindEntityType
,GetProperties
或FindProperty
等。
ctx.Model.FindEntityType(typeof(SomeEntity))
.FindProperty(nameof(SomeEntity.SomeStringProperty))
.GetMaxLength()
参考:Microsoft.EntityFrameworkCore.Metadata Namespace
关于c# - 在运行时检索提供给HasMaxValue的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57376296/