c# - 如何在 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();
}
}
}
解决方案
推荐阅读
- objective-c - 属性不能被标记为@NSManaged,因为它的类型不能在 Objective-C 中表示
- azure - 使用 Azure 函数和 HTTP 触发器在 Azure 服务总线订阅中获取下一条消息
- python - 如何将列表的一部分写入csv?
- kotlin - 如何从 Observable java rx 1.2 和 kotlin 中提取、工作和返回信息
- reactjs - 如何知道 reactstrap 表单的输入/表单字段的状态?
- apache-spark-mllib - 如何在 spark mlib 中设置 ALS 推荐器的起点?
- r - R删除重复并聚合多列中的总和
- java - RETURNING 子句在 pgAdmin 中有效,但为我的 Java 代码返回 -1
- odoo - 采购订单电子邮件链接已损坏 odoo
- java - 监听按键事件会阻止按键工作