gpt4 book ai didi

entity-framework - Entity Framework 4.0 POCO 和多对多问题

转载 作者:行者123 更新时间:2023-12-02 02:35:42 25 4
gpt4 key购买 nike

我已经创建了映射到实体域模型中的实体的 POCO 域对象。直到现在我必须处理多对多关系时,一切都运行良好。

假设我有三个表。
- 博客
- 博客标签
- 标记

你可以看到博客和标签是多对多的,有一个桥表,BlogTag 包含两个表的外键。

我也有相应的领域模型:
- 博客
- 博客标签
- 标签

现在,我选择了一个博客列表,并尝试访问博客中的特定标签。

myBlog.BlogsTags[0].标签

BlogTags[0].TagForeignKey 已填写,但 BlogTags[0].Tag 为 null !!

我还打开了 LazyLoading。

我做错了什么?

谢谢。

好的。这是一些源代码。

我的上下文类

public class MyContext : ObjectContext
{
public MyContext() : base(Utility.GetConnectionString(...), "containerName")
{
Blogs = CreateObjectSet<Blog>();
BlogsTags = CreateObjectSet<BlogTag>();
Tags = CreateObjectSet<Tags>();

base.ContextOptions.LazyLoadingEnabled = true;
}

public ObjectSet<Blog> Blogs { get; private set; }
public ObjectSet<BlogTag> BlogsTags { get; private set; }
public ObjectSet<Tags> Tags { get; private set; }
}

我的 poco 类只有一个带有 virtual 关键字的相关对象列表。

最佳答案

BlogTag 根本不应该是一个实体:它只是一种关系,不包含任何实际数据。如果关系在您的数据库中使用外键正确建模,实体模型设计者应该意识到这一点并从概念模型中消除 BlogTag...


编辑:

我不确定为什么延迟加载在这里不起作用,但您始终可以使用 Include 显式加载 Tag :

var myBlog = context.Blogs.Include("BlogTags.Tag").First(b => b.Id = blogId);
var tag = myBlog.BlogsTags[0].Tag;

关于entity-framework - Entity Framework 4.0 POCO 和多对多问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1910092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com