gpt4 book ai didi

c# - 在 Entity Framework Core 中添加实体图

转载 作者:太空宇宙 更新时间:2023-11-03 15:07:44 25 4
gpt4 key购买 nike

我在 EF Core 1.1.0 中使用代码优先方法在我的 SQL 数据库中创建了我的实体。

我的一些实体具有到其他实体的导航属性(一对一或一对多)。

问题是,当我尝试添加一个具有导航属性的实体时,根实体已成功添加,但相关实体却没有。

下面是代码:

public class PopcornContext : DbContext
{
public PopcornContext(DbContextOptions<PopcornContext> options)
: base(options)
{
}

public virtual DbSet<Movie> MovieSet { get; set; }
}

public partial class Movie
{
public Movie()
{
this.Genres = new HashSet<Genre>();
this.Cast = new HashSet<Cast>();
}

public int Id { get; set; }
public string Url { get; set; }
public string ImdbCode { get; set; }
public string Title { get; set; }
public string TitleLong { get; set; }
public string Slug { get; set; }
public int Year { get; set; }

public virtual ICollection<Genre> Genres { get; set; }
public virtual ICollection<Cast> Cast { get; set; }
}

public class PopcornContextFactory : IDbContextFactory<PopcornContext>
{
public PopcornContext Create(DbContextFactoryOptions options)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json");
var configuration = builder.Build();

var optionsBuilder = new DbContextOptionsBuilder<PopcornContext>();
optionsBuilder.UseSqlServer(configuration["SQL:ConnectionString"]);

return new PopcornContext(optionsBuilder.Options);
}
}

当我插入一部电影时:

using (var context = new PopcornContextFactory().Create(new DbContextFactoryOptions()))
{
var movie = new Database.Movie
{
ImdbCode = movieJson.ImdbCode,
TitleLong = movieJson.TitleLong,
Year = movieJson.Year,
Cast = movieJson.Cast.Select(cast => new Database.Cast
{
ImdbCode = cast?.ImdbCode,
SmallImage = cast?.SmallImage,
CharacterName = cast?.CharacterName,
Name = cast?.Name
}).ToList(),
Genres = movieJson.Genres.Select(genre => new Database.Genre
{
Name = genre
}).ToList(),
Slug = movieJson.Slug,
Title = movieJson.Title,
Url = movieJson.Url
};

await context.MovieSet.AddAsync(movie);
await context.SaveChangesAsync();
}

电影及其所有字段已添加到数据库中,但流派和类型转换不存在(空值)。

我已经设置了我的代码优先方法:

Add-Migration Initial

Update-Database

我错过了什么?我非常确定此代码适用于 EF6。

最佳答案

我想通了。实际上,这是 EF Core 中 AddAsync 方法的一个已知错误。非异步 Add 方法按预期工作。

参见 here

关于c# - 在 Entity Framework Core 中添加实体图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42581866/

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