首页 > 解决方案 > 如何在 EF 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();
        }
    }
}

标签: c#.netentity-frameworkentity-framework-core

解决方案


推荐阅读