实体框架:使用继承类型显示基类型

时间:2016-10-03 12:04:25

标签: c# oracle entity-framework inheritance

使用Entity Framework 6数据库第一种方法(oracle db)我想将两个不同的实体映射到同一个表,用于存储文件。该表格包含以下列:

  • ID(int)
  • MIMETYPE(varchar)
  • BLOB(blob)

第一个实体(UPL_DOCUMENTS)不应该包含BLOB属性。相反,实体RAW_UPL_DOCUMENTS也应该具有blob。一种类型的每个实体应该与另一种类型的实体完全相关。

我这样做是因为我想通过一个安静的Web API公开这些数据,我想只在调用文件的特定端点时才返回BLOB。在其他情况下,因为文件实体将被列为其他实体的导航属性,所以我希望保持HTTP响应更轻。

出于这个原因,使用数据库第一种方法,我创建了实体UPL_DOCUMENTS并使用Designer删除了BLOB属性。然后我手动添加了一个新实体,其 Base Type 设置为UPL_DOCUMENTS,称为RAW_UPL_DOCUMENTS,并仅添加了blob属性。

Designer清楚地显示了两种类型之间的继承关系。

如果我尝试验证我的模型,则会收到以下错误:

EntityTypes Model.UPL_DOCUMENTS, Model.RAW_UPL_DOCUMENTS are being mapped
to the same rows in table UPL_DOCUMENTS. Mapping conditions can be used 
to distinguish the rows that these types are mapped to.

将对象“映射到表UPL_DOCUMENTS中的相同行”正是我想要实现的,所以我无法理解如何防止此错误。

提前致谢

0 个答案:

没有答案