我正在使用Oracle数据源,仅读取数据,而不是写入,我可以不更改数据库上的任何内容。
想象一下这个场景有2个表,一个课程表和一个备忘录表。
Courses表有2个指向备忘录(MemoId)表的链接。
因此...
课程表 CourseId 标题 SummaryNarrationMemoId PreCourseInformationMemo
MemoToString表 MemoId MemoData(二进制)
因此,课程表连接到备忘录表两次,原因各不相同。
我向下看EF继承路由,使用相同的表两次,使用Memo表作为基础,并创建PreCourseMemo和SummaryNarrationMemo,但这会在构建时抛出这些错误:
我更新了模型,将两个表添加到模型中。
错误3005:从第613行开始映射片段时出现问题:必须在Set MemoToStringTables中指定所有类型的映射。 具有密钥(PK)的实体在以下情况下不会往返: 实体是类型[MyModel.MemoToStringTable]
错误3005:从第613行开始映射片段时出现问题:必须在Set MemoToStringTables中指定所有类型的映射。 具有密钥(PK)的实体在以下情况下不会往返: 实体是[MyModel.PreCourseMemo]类型
错误3005:从第613行开始映射片段时出现问题:必须在Set MemoToStringTables中指定所有类型的映射。 具有密钥(PK)的实体在以下情况下不会往返: 实体是类型[MyModel.SummaryNarrationMemo]
我知道我可以为数据库中的每个创建一个视图,但感觉不对。 :(有什么想法吗?
答案 0 :(得分:0)
如果我正确理解您的问题,它将无效。您正在尝试将继承映射到Memo表,但为此,Memo表必须包含特殊的鉴别器列,该列将告知EF它是PreCourseMemo
还是SummaryNarrationMemo
。你不能仅仅通过与课程的关系来区分这些类型。