如何通过EF Core中的自定义迁移实施“如果存在更新”?

时间:2019-02-10 10:58:42

标签: c# .net entity-framework entity-framework-core

我正在尝试为新实体创建迁移。但是,这是一件事情:由于将它保存为其他实体的内部对象,因此我无法检查它是否存在(如果存在,则需要更新)。

现在,我希望具有注释表(更具体地说是PK)的功能,这样,如果我尝试添加一个已经存在的实体,它将对其进行更新,而不是失败。

这可能吗?如果可以,怎么办?

(这里是显示问题的示例代码)。

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseNpgsql(@"Host=localhost;Database=mydatabase3;Username=postgres;Password=1234");
    }
}


public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
    public Blog ContainerBlog { get; set; }
    public int blabla { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        Blog b1 = new Blog();
        Blog b2 = new Blog();
        b2.ContainerBlog = b1;
        using (var ctx = new BloggingContext())
        {
            ctx.Database.Migrate();

            ctx.Blogs.Add(b1);
            ctx.SaveChanges();
        }
        using (var ctx = new BloggingContext())
        {
            ctx.Blogs.Add(b2);
            ctx.SaveChanges();
        }
    }
}

0 个答案:

没有答案