我正在尝试使用EntityFramework Core中Fluent API设置的反射来读取自定义属性。我做了一些研究,发现元数据工作区可以提供帮助,如以下链接所示:链接 1、链接 2。所有这些解决方案都在EntityFramework上。
如何将元数据工作区与 EntityFramework Core 一起使用?
或者,Asp.Net Core 2.1和EntityFramework Core上是否有任何解决方案可以在Fluent API设置的运行时读取配置属性?
EF core 没有元数据工作区
若要获取 EF Core Fluent API 设置的注释,请使用以下示例:
public class Basic {
public int Id {get; set;}
public string Value {get; set;}
}
public class BasicConfig {
public void Configure(EntityTypeBuilder<Basic> builder)
{
builder.ToTable("Basic");
builder.HasKey(e => e.Id)
.HasName("PK_Basic");
builder.Property(e => e.Value)
.IsRequired()
.HasMaxLength(500)
.IsUnicode(false)
.HasColumnName("Value");
}
}
/// <summary>
/// Returns the MaxLength of a PropertyInfo (field) off of a Custom EF modal Type
/// </summary>
public int DetermineSize(Type basicModelType) {
IEntityType fake = _context.Model.FindEntityType(basicModelType);
IProperty prop = fake.GetProperty("Value");
IEnumerable<IAnnotation> ann = prop.GetAnnotations();
int maxSize = (int)ann.SingleOrDefault(item => item.Name.Equals("MaxLength"))?.Value;
return maxSize;
}