Мы пытаемся реализовать слой данных с ORM между нашими объектами домена и нашими таблицами, используя EF.Мы успешно выполнили тривиальные сопоставления с сущностями домена, которые очень похожи на их соответствующие таблицы, но запутались, пытаясь отобразить объекты с более сложными отношениями, которые включают внешние ключи в свои представления таблиц.Я нашел множество ссылок на «Разделение таблиц» с использованием EF с таблицами, которые имеют первичные ключи, но это не относится к нашей схеме.
В качестве примера я хотел бы иметь доменные объекты в качестве POCOне более осведомлены о слое данных, чем простые идентификаторы:
public class EntityInfo
{
public int EntityId { get; set; }
public string EntityName { get; set; }
public string TypeName { get; set; }
public string ComponentName { get; set; }
}
public class Entity
{
public int EntityId { get; set; }
public EntityType Type { get; set; }
public EntitySource Source { get; set; }
public string Name { get; set; }
}
public class EntityType
{
public int TypeId { get; set; }
public string Name { get; set; }
}
public class EntitySource
{
public int SourceId { get; set; }
public string Name { get; set; }
}
Они будут сопоставлены с серией эквивалентных таблиц с внешними ключами:
Table Entities:
[PK] int EntityId
[FK] int TypeId
[FK] int SourceId
string Name
Table EntityTypes:
[PK] int TypeId
string Name
Table EntitySources:
[PK] int SourceId
string Name
Что нам действительно нужнодля этого нужно полностью отделить представление таблицы от сущностей домена и реализовать слой отображения (.msl) для разрешения этих довольно сложных отношений.Приведенный выше класс EntityInfo будет создаваться и храниться в таблицах, несмотря на то, что у него нет собственного представления в виде таблицы.Возможно ли такое сопоставление (иерархия нескольких таблиц к объектам) даже с использованием .msl?Возможно ли это с EF?