2017-02-20 36 views
0

Есть ли способ сопоставить определенное поле с несколькими столбцами в Entity Framework? В конкретном сценарии используется наследование с иерархией Table per Type. Я хотел бы, чтобы определенное поле появлялось как в таблице базового типа, так и в таблице конкретного типа.Хранить дубликаты данных в Entity Framework

Пример:

abstract class BaseEntity 
{ 
    int id { get; set; } 
    DateTime createDate { get; private set; } 
    string TypeName { get; private set; } 

} 

public class Person : BaseEntity 
{ 
    int id { get; set; } 
    DateTime createDate { get; private set; } 
    string TypeName { get; private set; } 
    string FirstName {get; set;} 
    string LastName {get; set;} 
    DateTime DateOfBirth {get; set;} 
} 

Базовый класс Таблица

int ID, 
DateTime createDate, 
varchar TypeName 

Класс бетона Таблица

int ID, 
DateTime createDate, 
varchar FirstName, 
varchar LastName, 
DateTime DateOfBirth 

Это не является проблемой, имеющей идентификатор в обеих таблицах, поскольку он является первичным ключом. Однако дата создания рассматривается как отдельные данные.

Основная причина этого - поддержание базы данных и поддержка. Я понимаю, что дублирование данных не является хорошей практикой. Это будет только для нескольких полей.

ответ

0

Нет, это невозможно, это также не очень хороший код C#, так как вы, скорее всего, получите предупреждение о том, что CreateDate затеняет унаследованное свойство.

Вы можете решить эту проблему, используя триггер базы данных, который вставляет/обновляет значение после завершения вставки/обновления в производной таблице.

+0

Код C# не должен выглядеть так. Свойство не нужно читать в класс Person, если есть другой способ. Я бы хотел, чтобы «триггер» предлагал сделать что-то в коде – mfreedm52

 Смежные вопросы

  • Нет связанных вопросов^_^