c# - 在 SQL 中实现 C# 迁移代码

标签 c# mysql sql-server

我是 SQL 新手,今天我接到了一项重要任务 - 为表中的数据创建迁移脚本。据我了解,迁移脚本正在从表 A 复制数据并将其移动到其他表 B 和 C 等。当数据库设计不断变化并且团队想要保留数据时,这似乎很常见。

我的任务: 我有一个带有 CityId 字段的 JobOffer 表。现在团队想要删除该字段,并为了保留信息,他们将把 CityId 添加到 Address 表中,并使用名为 Location 的中间表连接两个表(这允许JobOffer 有多个地址)。

enter image description here

我不知道如何执行此任务。我假装的 c# 类比是这样的:

foreach (var row in JobOffer)
{
    int addressId;
    if (!Address.Contains(row.CityId)){
        addressId = Address.add(row.CityId);
        Locaion.add(row.JobOfferId, addressId);
    }
    else
    {
        Locaion.add(row.JobOfferId, Address.get(row.CityId));
    }
}

我如何在 SQL 中执行此操作?

最佳答案

您需要三张表 - 一张用于候选人,一张用于地址(位置),一张将两者联系起来。第三个表是必要的,因为你描述的是多对多关系。一个候选人可能有多个地点,一个地点可能容纳多个候选人。

当我创建类似于您的创建时,它对输入数据进行了两次扫描: 第一个检查我是否拥有所有位置。如果有任何遗漏,我将其插入到位置表中。

第二次扫描将数据插入到 candidate 和 canditatelocs 表中。在这一点上,我确定我在位置表中有每个候选人的地址。

下面是表格的描述:

创建候选表(candidateid int identity primary key, idate datetime default getdate(), name varchar(200))

创建表 candidatelocs (candidateid int, locid int)

创建表位置(locid int identity primary key, city varchar(500), state varchar(500))

关于c# - 在 SQL 中实现 C# 迁移代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28746205/

相关文章:

c# - 如何将相同的依赖关系绑定(bind)到 Ninject 中的多个依赖项?

C# 从单独的表单中获取变量值

php - MySQL:在选择查询中获取多个值的比例值

sql - 将 MIN 聚合函数应用于 BIT 字段

sql-server - 多个表的外键

c# - 如何从 C#、Process.Start ("shutdown"关闭)在 Windows XP 中不起作用

c# - 在 C# 中验证一个字符串是否只包含字母

sql - Max() 通过日期条件进行分区

mysqldump 要求输入密码,即使在命令行/配置文件中给出

php - Mysql 查询花费太多时间