Используя существующую базу данных и EF-код в первую очередь, сопоставление таблицы поиска с сущностью - PullRequest
1 голос
/ 19 марта 2012

Я использую Entity Framework, сначала код 4.0, доступ к существующей устаревшей базе данных для доступа только для чтения. База данных нормализована, поэтому

 Table [Event]
      [ID]
      [Date_Entered]
      [Event_Status_Key]

 Table [Event_Status]
      [Event_Status_Key]
      [Event_Status_Description]

Мой класс выглядит как

 public class Event
 {
       public DateTime DateEntered { get; set; }
       public string StatusDescription { get; set; }
 }

Это приложение уровня сервиса WCF.

Мои два вопроса:

  1. Есть ли простой способ заполнить описание статуса, не создавая второй объект типа словаря? Я видел такие вопросы: Отображение Entity Framework в таблицу поиска , но они, кажется, сфокусированы на объекте, и я действительно просто хочу примитив. Я бы предпочел использовать свободный API, а не атрибуты.

  2. Когда данные загружаются, кэшируются ли какие-либо данные на уровне кода? Или каждая проверка в StatusDescription означает отдельный вызов в таблице [Event_Status]?

Редактировать: Возможный (более субъективный, поэтому я не поднял его) третий вопрос - насколько близко объекты данных должны соответствовать базе данных. Это всегда одно-однозначное поле / таблица? Что я делаю (объединяя две таблицы в один объект данных) плохо?

Спасибо.

1 Ответ

1 голос
/ 19 марта 2012

Entity Framework ожидает, что вы отобразите обе таблицы как отдельные сущности и будете использовать проекцию в вашем запросе:

var query = from e in context.Events
            select new WcfEvent // Your original Event class is just DTO
                {
                     DateEntered = e.DateEntered,
                     StatusDescription = e.EventStatus.EventStatusDescription 
                };

В этом примере правильно показано сопоставление ваших 100 * * и Event_Status один к одному.Таблицы.

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

...