我正在尝试使用.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();
}
产生的数据库:
请注意,已添加了20个插件,但没有类别。
答案 0 :(得分:0)
我有完全相同的问题。目前我通过首先在数据库中添加(在您的情况下)Categorie来克服这个问题,在构造Category对象时填充了FK属性。
我不知道为什么它不再像以前那样工作......
编辑:我正在使用/扩展ApplicationDbContext,创建一个新的并使用它修复它。