在 Entity Framework Core 上管理一对多插入的最佳实践
Best Practice To Manage One To Many Insertions on Entity Framework Core
我们目前正在开发一个 .Net Core 控制台应用程序,它使用 Web 服务来获取数据并将其异步插入到数据库中。
Web 服务 returns 一个对象 - 为使问题简单起见,我们称它为 Orders - 有一个 Country,日期 和排序依据 字段。在我们的数据库中,我们有一个 Countries 和 Orders table 具有一对多关系。
当应用程序启动时,它会将国家/地区列表存储在静态列表中 属性。当返回来自 Web 服务的新订单时,检查国家字段是否存在于当前列表 属性 中以从中获取 Id 字段。如果不存在,则将一条新记录插入数据库,并使用辅助方法更新 List 属性。这种情况在单线程中没有任何问题。但是,当我们发出 Web 服务请求并异步更新数据库时,每个异步任务都会独立更新列表 属性,这会导致多个国家/地区值具有相同的名称。
是否有最佳实践来仅在插入新记录时更新国家/地区列表并防止不同任务插入相同的值?
亲切的问候
Is there a best practice to keep country list updated only when a new record is inserted and prevent inserting the same values by different Tasks?
是的。在国家/地区实体的名称 属性 上放置 unique index。然后,当您尝试添加重复的国家/地区时,它将失败,您可以取而代之检索现有国家/地区的 ID。
我们目前正在开发一个 .Net Core 控制台应用程序,它使用 Web 服务来获取数据并将其异步插入到数据库中。
Web 服务 returns 一个对象 - 为使问题简单起见,我们称它为 Orders - 有一个 Country,日期 和排序依据 字段。在我们的数据库中,我们有一个 Countries 和 Orders table 具有一对多关系。
当应用程序启动时,它会将国家/地区列表存储在静态列表中 属性。当返回来自 Web 服务的新订单时,检查国家字段是否存在于当前列表 属性 中以从中获取 Id 字段。如果不存在,则将一条新记录插入数据库,并使用辅助方法更新 List 属性。这种情况在单线程中没有任何问题。但是,当我们发出 Web 服务请求并异步更新数据库时,每个异步任务都会独立更新列表 属性,这会导致多个国家/地区值具有相同的名称。
是否有最佳实践来仅在插入新记录时更新国家/地区列表并防止不同任务插入相同的值?
亲切的问候
Is there a best practice to keep country list updated only when a new record is inserted and prevent inserting the same values by different Tasks?
是的。在国家/地区实体的名称 属性 上放置 unique index。然后,当您尝试添加重复的国家/地区时,它将失败,您可以取而代之检索现有国家/地区的 ID。