У меня есть мастер-класс, подобный этому.
public class MasterTemplate
{
[Key]
public int Id { get; set; }
[StringLength(50)]
public string Code { get; set; }
[Required]
[StringLength(255)]
public string Description { get; set; }
public decimal? SortOrder { get; set; }
}
У меня есть много классов, которые наследуют вышеуказанный класс.Например, Каста, Национальность, Валюта и т. Д.,
public class Nationality : MasterTemplate
{
// Other memebers of nationality
}
public class Caste: MasterTemplate
{
// Other memebers of caste
}
Большинству классов нужны все столбцы, но некоторые из моих классов не нуждаются в «Описание», некоторые из них не нуждаются в «Код ", некоторые другие не нуждаются в" SortOrder ".
public class Zone: MasterTemplate
{
// Logic to mark Description [NotMapped],
// so that EF doesn't create a column in database
// Other memebers of zone
}
Для члена в том же классе я могу использовать [NotMapped], но как мне сделать это из дочернего класса для атрибута родительского класса.Я знаю, что могу удалить наследование и сделать это, но любопытно узнать, есть ли возможность сделать это из дочернего класса для атрибута родительского класса.
Редактировать:
Как предложено @IvanJazz, изменил код следующим образом.
public class MasterTemplate
{
[Key]
public int Id { get; set; }
[StringLength(50)]
public virtual string Code { get; set; }
[Required]
[StringLength(255)]
public virtual string Description { get; set; }
public virtual decimal? SortOrder { get; set; }
}
public class Nationality : MasterTemplate
{
// Code will not appear in Nationality table
[NotMapped]
public override string Code { get; set; }
}
public class Zone : MasterTemplate
{
// Description will not appear in Zone table
[NotMapped]
public override string Description { get; set; }
}
Теперь логически, структура сущностей не должна искать переопределенные и помеченные как атрибуты NotMapped при добавлении записи.При вставке следующего DbValidation возникает ошибка.Не уверен, почему структура сущностей все еще ищет не отображенные атрибуты