2013-05-22 3 views
0

У меня есть три объекта, которые имеют общий базовый класс. Каждый из сущностей имеет свой собственный класс Map для моего контекста и очень просто загружается. Каждый объект имеет другое имя первичного ключа, которое я переименовываю в базовый класс, поэтому я могу использовать общие методы трех объектов при использовании одного и того же имени свойства.EF получение сопоставленного имени столбца из строки

Все прекрасно отображает при переходе в базу данных, например, я могу сделать db.Vehicle.Where(v => v.VehicleID < 100), и это переводит на имя столбца БД, отличное от VehicleID.

Проблема в том, что я сейчас хочу идти в противоположном направлении. Так, например, у меня может быть строка "Length", но в одной таблице это может быть Length1 и в другом Length2. Я хочу использовать то же самое отображение, которое я использовал в построителе моделей, чтобы иметь возможность переводить "Length" во все соответствующие значения, основанные на свойстве (v => v.Length) в базовом классе.

Есть ли у кого-нибудь идеи о том, как это может быть выполнено?

ответ

0

Если вы уже пробовали этот свободный API, и это не сработало, я рекомендую объявить свойство виртуальным.

modelBuilder.Entity<ConcreteClass1>() 
.Property(f => f.Length) 
       .HasColumnName("Length1"); 

modelBuilder.Entity<ConcreteClass2>() 
.Property(f => f.Length) 
       .HasColumnName("Length2"); 
+0

Да, я понимаю, отображение с моделью строитель, но позволяет сказать, что я даюсь строка «Length», я бы тогда, как каким-то образом использовать EF, чтобы отобразить это значение строки к строке «length1» для ConcreateClass1 и " Length2 "для ConcreateClass2. Причина в том, что я создаю шаблон для отображения разных типов транспортных средств, и я хотел бы указать в профиле только одно значение, которое затем можно каким-либо образом отобразить через EF в соответствующее имя столбца в базе данных. Как EF знает, что нужно изменить. Где (f => f.Length) в «Length1», когда он генерирует SQL? – Abysmalk

+0

<< Как EF знает, что нужно изменить. Где (f => f.Length) в «Length1», когда он генерирует SQL? >> Мы сообщим modelBuilder имя столбца с помощью функции HasColumnName, то есть как EF знает, что такое столбец имя для свойства. Я не понимаю, в чем ваш вопрос. – hazimdikenli

+0

Есть ли способ получить доступ к этой таблице поиска, которую я создаю с помощью построителя модели? Итак, если у меня есть свойство, я могу получить отображаемое имя строки? – Abysmalk

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