Код 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?

0 ответов

Другие вопросы по тегам