在网上狩猎之后,我想我会想出解决方案,我似乎已经打了另一个砖墙。
我的数据库中有一张表:照片;包含PhotoID,Caption,Ordering和四组二进制数据的列:Original,Large,Medium和Small(是的,它基于旧的ASP.NET入门套件,包含各种修复程序等)。
我正处于从L2S迁移到实体框架的过程中,因为我看起来有一些优势 - 所以我不再需要通过PhotosTags属性来获取附加到照片的标签列表,但是我正在寻找延迟加载二进制数据的方法 - 大多数时候,我只需要标题,标签和ID,然后我将这些文件移到另一个区域以获取用户实际查看图像时的二进制数据。
我看过以下帖子:
最后我得到了一个实体映射,如下所示:
并且,根据上面的链接,我修改了edmx文件以包含以下参照约束:
<ReferentialConstraint>
<Principal Role="Photos">
<PropertyRef Name="PhotoID" />
</Principal>
<Dependent Role="PhotoDetails">
<PropertyRef Name="PhotoID" />
</Dependent>
</ReferentialConstraint>
模型验证,但不构建 - 因为我认为标签映射存在问题:
错误3019:从第871行,第892行开始映射片段中的问题:复合键列的映射不正确。从表siteContent_TagsPhotos(PhotoID)到表siteContent_Photos(PhotoID)的外键约束'FK_siteContent_TagsPhotos_siteContent_Photos':表siteContent_TagsPhotos中的列(PhotoID)映射到siteContent_TagsPhotos中的属性(PhotoID),表siteContent_Photos中的列(PhotoID)映射到属性(PhotoID)在PhotosPhotoDetails中。不保留通过映射的列的顺序。
从照片到标签的关系是通过链接表,列PhotoID,TagID。
有没有人设法获得这些建议或类似的东西,以与.NET 3.5 SP1中的实体框架一起使用这样的数据结构?或者你能指出我的GoogleFU的局限性吗?
我知道在.NET 4中这一切都会容易得多,但这不是在这里,它可能会在它发布后的一段时间内我的主机开始提供在某处安装它。
谢谢。
我遇到了同样的问题,虽然我没有找到3.5SP1的解决方案,但我确认这个错误在EF 4.0中消失了。
实际上,一个潜在的解决方法是在PhotoDetails实体中为主键使用不同的字段。