未使用EFcore添加到数据库的对象列表

时间:2016-12-09 15:33:23

标签: c# entity-framework

我正在尝试使用.NET内核创建一个简单的程序,该程序应该将插件和相关类别保存到MySQL数据库中。

这两个类存在:

public class Plugin
{
    public string Name { get; set; }

    public string Description { get; set; }

    public List<Category> Categories { get; set; }

    [Key]
    public string ProjName { get; set; }

    public string DownloadURL { get; set; }
}

public class Category
{
    [Key]
    public string UniqueName { get; set; }

    public string PrettyName { get; set; }
}

我正在使用这个上下文:

public class Context : DbContext
{
    public DbSet<Plugin> Plugins { get; set; }

    public DbSet<Category> Categories { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        => optionsBuilder
            .UseMySql(@"Server=XXX");
}

简化代码(没有HttpClient的东西)如下所示:

public static async Task GetPluginsOnPage(string baseUri)
{
    foreach (var plugin in pluginsOnPage)
    {
        List<Category> categories = new List<Category>();

        var nameHtml = "**";
        var descHtml = "**";
        var projName = "**";

        foreach (var x in plugin.***)
        {
            categories.Add(new Category() {PrettyName = "", UniqueName = "**" });
        }

        var downloadUri = "**";

        await Ctx.Plugins.AddAsync(new Plugin { Categories = categories, Description = descHtml, Name = nameHtml, ProjName = projName, DownloadURL = downloadUri });
    }

    await Ctx.SaveChangesAsync();
}

产生的数据库:

enter image description here

请注意,已添加了20个插件,但没有类别。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

我有完全相同的问题。目前我通过首先在数据库中添加(在您的情况下)Categorie来克服这个问题,在构造Category对象时填充了FK属性。

我不知道为什么它不再像以前那样工作......

编辑:我正在使用/扩展ApplicationDbContext,创建一个新的并使用它修复它。