Я работаю с устаревшей базой данных, структура которой не может быть изменена (по крайней мере, пока), и у нее есть что-то вроде этого:
**Profile**:
profile_id
first_name
last_name
**OneBigLookupTableToRuleThemAll**:
lookup_id (PK)
category_id (PK) (refers to a recrod in a OneBigCategoryTableToRuleThemAll)
description (basically a label)
**ProfileProperties**:
property_key (PK GUID)
profile_id
lookup_id
UNIQUE constraint on profile_id, lookup_id
В качестве примера двух категорий:
Degrees (MD, PhD, MS, MPH, etc) -- cat_id 1, for example
Job Responsibilities (Statistician, Medical Doctor, Epidemiologist, etc) -- cat_id 2
Итак, в таблице Lookup мы получаем такие вещи:
lookup_id, cat_id, description
1 , 1 , MD
2 , 1 , PhD
3 , 1 , MS
4 , 1 , MPH
5 , 2 , Statistician
6 , 2 , Medical Doctor
7 , 2 , Epidemiologist
Таким образом, в таблице ProfileProperties мы получаем такие вещи, как:
property_key, profile_id, lookup_id
some guid , 1 , 1 -- MD degree
some guid , 1 , 4 -- MPH degree
some guid , 1 , 6 -- Medical Doctor
Я хотел бы иметь такой объект:
public class Profile {
public int ProfileId { get; }
public string FirstName { get; set; }
public string LastName { get; set; }
public ICollection<JobResponsibility> JobResponsibilities { get; set; }
public ICollection<Degree> Degrees { get; set; }
}
public class JobResponsibility {
public int Id { get; set; }
public string Description { get; set; }
}
public class Degree {
public int Id { get; set; }
public string Description { get; set; }
}
- На самом деле, в установщиках идентификатора я хотел бы ограничить значение одним из фактических значений в базе данных,хотя я не уверен, что пойду на полную поддержку типа Enum (и я знаю, что сначала код не поддерживает это)
Я считаю, что один из сценариев отображения EntityFramework должен быть в состоянии справиться с этим,но я не могу понять, что мне нужно сделать, чтобы заставить это работать.
У кого-нибудь есть какие-либо советы или ресурсы, которые я могу прочитать по этому сценарию?Я думаю, что на самом деле все закончится очень просто, но я новичок в EF.
Спасибо, Джош