EF4:两次使用同一个表

时间:2012-04-24 09:59:54

标签: c# entity-framework entity-framework-4

我正在使用Oracle数据源,仅读取数据,而不是写入,我可以更改数据库上的任何内容。

想象一下这个场景有2个表,一个课程表和一个备忘录表。

Courses表有2个指向备忘录(MemoId)表的链接。

因此...

课程表 CourseId 标题 SummaryNarrationMemoId PreCourseInformationMemo

MemoToString表 MemoId MemoData(二进制)

因此,课程表连接到备忘录表两次,原因各不相同。

我向下看EF继承路由,使用相同的表两次,使用Memo表作为基础,并创建PreCourseMemo和SummaryNarrationMemo,但这会在构建时抛出这些错误:

我更新了模型,将两个表添加到模型中。 TwoTablesInEF

错误3005:从第613行开始映射片段时出现问题:必须在Set MemoToStringTables中指定所有类型的映射。 具有密钥(PK)的实体在以下情况下不会往返:   实体是类型[MyModel.MemoToStringTable]

错误3005:从第613行开始映射片段时出现问题:必须在Set MemoToStringTables中指定所有类型的映射。 具有密钥(PK)的实体在以下情况下不会往返:   实体是[MyModel.PreCourseMemo]类型

错误3005:从第613行开始映射片段时出现问题:必须在Set MemoToStringTables中指定所有类型的映射。 具有密钥(PK)的实体在以下情况下不会往返:   实体是类型[MyModel.SummaryNarrationMemo]

我知道我可以为数据库中的每个创建一个视图,但感觉不对。 :(有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,它将无效。您正在尝试将继承映射到Memo表,但为此,Memo表必须包含特殊的鉴别器列,该列将告知EF它是PreCourseMemo还是SummaryNarrationMemo。你不能仅仅通过与课程的关系来区分这些类型。