我有以下数据库模型
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; }
}
将实体和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?