Ein weiterer Weg, dies zu behandeln, besteht darin, eine benutzerdefinierte Entitätskonfiguration zu definieren und eine Bindung dafür hinzuzufügen.
Fügen Sie in Ihrer Klasse eine Klasse hinzu, die von EntityTypeConfiguration erbt (Diese befindet sich in System.Data.Entity.ModelConfiguration)
public partial class Report : Entity
{
//Muss eine Eigenschaft sein
private string _Tags {get; set;}
[NotMapped]
public string[] Tags
{
get => _Tags == null ? null : JsonConvert.DeserializeObject(_Tags);
set => _Tags = JsonConvert.SerializeObject(value);
}
[MaxLength(100)]
public string Name { get; set; }
[MaxLength(250)]
public string Summary { get; set; }
public string JsonData { get; set; }
public class ReportConfiguration : EntityTypeConfiguration
{
public ReportConfiguration()
{
Property(p => p._tags).HasColumnName("Tags");
}
}
}
Fügen Sie in Ihrem Kontext Folgendes hinzu:
using Models.ReportBuilder;
public partial class ReportBuilderContext:DbContext
{
public DbSet Reports { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new Report.ReportConfiguration());
base.OnModelCreating(modelBuilder);
}
}
Ich wünschte, ich könnte sagen, dass ich das alleine gefunden habe, aber ich bin darauf hier gestoßen: https://romiller.com/2012/10/01/mapping-to-private-properties-with-code-first/