Комплексный тип
public class Timestamp
{
public string By { get; set; }
public DateTime? On { get; set; }
}
Требуемое сопоставление по умолчанию
Есть ли способ добавить соглашения в каркас сущностей, чтобы типы, у которых мой класс Timestamp
в качестве свойства (как показано ниже), по умолчанию отображались на "CreatedBy" вместо "Created_By"? Если да, то как?
public class StationProductRun
{
public int Id { get; set; }
public int PlantProductRunId { get; set; }
public int StationId { get; set; }
public string SapProductId { get; set; }
public Timestamp Created { get; set; }
public Timestamp Started { get; set; }
public Timestamp Finished { get; set; }
public StationProductRun()
{
Created = new Timestamp();
Started = new Timestamp();
Finished = new Timestamp();
}
}
- Created.By => CreatedBy
- Created.On => CreatedOn
- Started.By => StartedBy
- Started.On => StartedOn
- Finished.By => FinishedBy
- 1025 * Etc. *
Я знаю, что мог бы создать EntityTypeConfiguration<T>
реализаций для каждого типа, но я устал от написания такого scaffoldable кода и ищу лучшую альтернативу.
Что я пробовал
Я попробовал следующее, но я не уверен, что даже нахожусь в приблизительном поле на этом, и он жалуется на фильтрацию свойств и тому подобное. Даже не уверен, что это делает то, что я хочу.
modelBuilder.Properties<Timestamp>()
.Configure(x =>
{
if (x.ClrPropertyInfo.DeclaringType == typeof(Timestamp))
{
switch (x.ClrPropertyInfo.Name)
{
case "By":
x.HasColumnName(x.ClrPropertyInfo.Name + "By")
.IsOptional();
return;
case "On":
x.HasColumnName(x.ClrPropertyInfo.Name + "On")
.IsOptional();
return;
}
}
});
'Тип «Отметка времени» нельзя использовать для фильтрации свойств. Поддерживаются только скалярные типы, string и byte []. '