gpt4 book ai didi

.net - 如何让 Entity Framework 在我新创建的实体上初始化集合?

转载 作者:行者123 更新时间:2023-12-01 08:01:18 25 4
gpt4 key购买 nike

我正在尝试使用 IDatabaseIntialiser 为我的数据库设置一些测试数据像这样:

protected override void Seed(BlogDataContext context)
{
// <snip>
var post = context.Posts.Create();
post.Title = "My Life On Twitter";
// <snip properties>

// Set tags
post.Tags.Add(aspnetTag); // NullRefException
post.Tags.Add(razorTag);

帖子实体如下所示:
public class Post
{
// ...
public virtual ICollection<Tag> Tags { get; set; }

Bitbucket 上的完整实体: PostTag .所有代码都在 http://code.dantup.com/blog

然而, post.Tags为空,所以这不起作用。最初我创建的帖子是 new Post() ,但是因为我调用 Create EF 提供的方法,为什么集合没有初始化?

在这里实例化我自己的集合感觉很笨拙,如果我在构造函数中这样做,大概每次我从 EF 加载一个实体时,它都会在构造函数中创建集合,然后用包含来自 EF 的实际数据的集合覆盖它D B?

有什么方法可以告诉 EF 为我创建一个实体,包括我的 ICollections 的集合/代理(假设 ICollection 是正确的选择)?

编辑 : context.Configuration.ProxyCreationEnabled设置为 true(默认), which seems to exist for this reason ?

最佳答案

使用 POCO 实体和 EF,我通常在构造函数中初始化集合。而且,我更喜欢 ISet 而不是 ICollection ;-)

关于.net - 如何让 Entity Framework 在我新创建的实体上初始化集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5982254/

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