Код EF6 с первого по 6NF таблицы
У меня есть следующая модель базы данных
Entity
Id, ...
PropertyType
Id, Name, DataType, ...
EntityProperty
Id, EntityId, PropertyTypeId
PropertyValueString
Id, Value
PropertyValueDateTime
ID, Value
Сначала я использую код EF6 для сопоставления моих сущностей с этой моделью данных
class Entity {
public Guid Id { get; set; }
...
}
class PropertyType {
public Guid Id { get; set; }
public string Name { get; set; }
public Type DataType { get; set; }
...
}
class EntityProperty {
public Guid Id { get; set; }
public Guid EntityId { get; set; }
public Entity Entity { get; set; }
public Guid PropertyTypeId { get; set; }
public PropertyType PropertyType { get; set; }
public string StringValue { get; set; }
public DateTime? DateTimeValue { get; set; }
}
Отображение классов Entity и PropertyType в соответствующие таблицы просто. EntityProperty отображается с помощью
Map(m => m.ToTable("EntityProperty").Properties(p => new { p.Id, p.EntityId, p.PropertyTypeId });
Map(m => m.ToTable("PropertyValueString").Properties(p => new { p.Id, p.StringValue });
Map(m => m.ToTable("PropertyValueDateTime").Properties(p => new { p.Id, p.DateTimeValue });
Как мне сопоставить мой EntityProperty с PropertyValueString
или же PropertyValueDateTime
таблицы в зависимости от того, какое поле имеет значение? Кроме того, запрос, генерируемый при включении EntityProperty, должен LEFT JOIN
с PropertyValueString и PropertyValueDateTime.
Это возможно даже с Entity Framework?