2016-12-09 41 views
0

我想用.NET核心制作一个简单的程序,该程序应该将插件和关联的类别保存到MySQL数据库中。使用EFcore不添加到数据库中的对象列表

这两个类存在:

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

回答

0

我有相同的问题。目前,我通过将Categorie添加到数据库中(在您的情况中)首先克服了这一点,在构建Category对象时填充了FK属性。

我不知道为什么,因为它应该再这是不工作...

编辑:我用/延长ApplicationDbContext,创造一个新的,使用固定对我来说。

相关问题