У меня есть класс, который я хотел бы сопоставить с одной таблицей двумя различными способами из соображений конфиденциальности.Допустим, класс выглядит следующим образом:
class Person
{
public int ID { get; set; }
public string Name { get; set; }
// ... many other properties omitted ...
}
И соответствующая таблица базы данных выглядит следующим образом:
create table Person
(
ID int not null,
RealName nvarchar(512) not null,
FakeName nvarchar(512) not null,
-- many other columns omitted
)
Мне нужно два сопоставления:
- От Имя свойство до Реальное имя Столбец
- От Имя Свойство до Ложное имя Столбец
Все остальные свойства должны отображаться одинаково в обоих случаях.Я настоятельно предпочитаю не повторять сопоставления для этих других свойств.
Я попробовал несколько разных подходов, но безуспешно.Использование изолировать различные сопоставления не удается с этой ошибкой: DuplicateMappingException: дублирующее сопоставление таблицы Person .Я мог бы создать два разных представления базы данных и отобразить их отдельно, чтобы избежать ошибки отображения дублирующихся таблиц, но это не является предпочтительным.
Использование атрибута "entity-name" дляуказывать сопоставления заманчиво, но плохо документировано и, по-видимому, имеет ряд существенных недостатков: а) требуется повторение всех остальных сопоставлений для обоих объектов, и б) оно не совместимо сотношения из других классов, которые относятся к классу Person.
Есть ли хороший способ сделать это, которого мне не хватает?