【问题标题】:Data Import Export Issue C#/SQL Server数据导入导出问题 C#/SQL Server
【发布时间】:2011-09-22 23:00:15
【问题描述】:

我需要为三个与主键/外键约束内部相关的数据库表实现导入导出模块。

我可以使用 c#/linq to xml/linq to sql 轻松完成这两个部分。问题是,当我在数据库中导入导出的数据时,主键表的 id 正在重新生成,而没有从 xml 文件中获取/分配 id(对于自动增量来说是自然的)。为此,无法导入其他表数据/显示违反主键约束的错误。

我的目标是导入所有数据并保持主键/外键不变。

现在,谁能建议我可以做些什么来解决这个问题?提前致谢。

【问题讨论】:

    标签: c# sql-server linq-to-sql import linq-to-xml


    【解决方案1】:

    您可以使用identity insert 指定标识列的值。

    如果您为标识列指定显式值,则您自己负责解决冲突。如果数据库已经有id = 1 的行,您必须决定如果导入还包含id = 1 该怎么办:SQL Server 只会抛出错误。

    【讨论】:

      【解决方案2】:

      我们总是将 BCP 操作用于此类任务。

      【讨论】:

      • +1 或 SQL Server 集成服务 - 为什么一遍又一遍地重新发明轮子??
      【解决方案3】:

      我建议不要让你的自动增量成为主键,而是拥有一个可以以其他方式定义的单独主键......那么你不会遇到自动增量的问题

      【讨论】:

        【解决方案4】:

        如果您不需要 XML 和 SQL 中的 id 匹配(仅关系),您可以使用 SCOPE_IDENTITY() 并维护从 XML id 到 SQL id 的映射,以便在其他表中正确插入外键列。

        【讨论】:

        • 我建议使用SCOPE_IDENTITY() 而不是@@IDENTITY
        • (请参阅this blog post 了解为什么...
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多