【发布时间】:2019-09-18 09:58:08
【问题描述】:
有没有办法将复杂类型映射到字符串?
我正在做如下自定义映射:
foreach (var pb in modelBuilder.Model
.GetEntityTypes()
.SelectMany(t => t.GetProperties())
.Where(p => p.ClrType == typeof(SomeComplexType) && !Attribute.IsDefined(p.GetMemberInfo(false, false), typeof(Padding)))
.Select(p => modelBuilder.Entity(p.DeclaringEntityType.ClrType).Property(p.Name)))
{
pb.HasConversion(new ValueConverter<SomeComplexType, string>(
v => v.ToString(),
v => SomeComplexType.Parse(v)));
}
但是在运行迁移时我得到了
无法映射属性“SomeEntity.ComplexTypeProperty”,因为它属于“SomeComplexType”类型,它不是受支持的原始类型或有效的实体类型。显式映射此属性,或使用“[NotMapped]”属性或使用“OnModelCreating”中的“EntityTypeBuilder.Ignore”忽略它。
所以我希望能够将复杂类型映射到字符串并按原样保存。
【问题讨论】:
-
问题是
.Property(p.Name)调用 - 按照惯例,这些不是属性,而是导航。所以不要使用GetProperties()使用GetNavigations()- 请参阅stackoverflow.com/questions/57697901/…
标签: c# asp.net-core entity-framework-core