在网络上搜索并认为我找到了解决方案后,我似乎又遇到了问题。
我的数据库中有一张表:Photos;包含PhotoID、Caption、Ordering和四组二进制数据:原始、大型、中型和小型(是的,它是基于旧的ASP.NET starter kit进行的各种修复等)。
我正在将某些内容从L2S移动到Entity Framework,以获得一些优势-这样我就不再需要通过PhotosTags属性获取附加到照片的标签列表,但我正在寻找一种延迟加载二进制数据的方法-大多数情况下,我只需要标题、标签和ID,然后当用户实际查看图像时,我将其传递给另一个区域以获取二进制数据。
我查看了以下帖子:
- 如何分割数据表?
- “表分割”:将多个实体类型映射到同一张表。
- 第7章:Entity Framework 学习指南(7.1 延迟加载昂贵的字段)
最终,我得到了这样一个实体映射:
并且,根据上面的链接,我修改了edmx文件以包含以下引用约束:
<ReferentialConstraint>
<Principal Role="Photos">
<PropertyRef Name="PhotoID" />
</Principal>
<Dependent Role="PhotoDetails">
<PropertyRef Name="PhotoID" />
</Dependent>
</ReferentialConstraint>
模型验证通过,但无法构建 - 我认为是由于标签映射的问题:
错误3019:从表siteContent_TagsPhotos(PhotoID)到表siteContent_Photos(PhotoID)的外键约束“FK_siteContent_TagsPhotos_siteContent_Photos”:在起始行为871、892的映射片段中存在问题。复合键列的映射不正确。在表siteContent_TagsPhotos中,列(PhotoID)被映射到siteContent_TagsPhotos中的属性(PhotoID),而在表siteContent_Photos中的列(PhotoID)被映射到PhotosPhotoDetails中的属性(PhotoID)。通过映射的列的顺序未得到保留。
Photos到Tags的关系是通过链接表中的列PhotoID和TagID进行的。
是否有人已经成功地将那些建议或类似的东西与.NET 3.5 SP1中的实体框架一起使用,并且具有像这样的数据结构?或者你能指出我的GoogleFU的限制吗?
我知道在.NET 4中所有这些都会变得更加容易,但那还没有到来,而且在我的主机开始在某个地方安装它之后,它可能会过一段时间才会发布。
谢谢。