【问题标题】:Linq insert with no primary key没有主键的 Linq 插入
【发布时间】:2010-09-24 21:31:11
【问题描述】:

我需要使用 LINQ to SQL 将记录插入到没有主键的表中。桌子设计得很差;我无法控制表结构。该表由几个 varchar 字段、一个文本字段和一个时间戳组成。它被用作其他实体的审计线索。

完成插入的最佳方法是什么?我可以为这个表扩展 Linq 部分类并添加一个“假”键吗?我愿意接受任何黑客攻击,无论多么笨拙。

【问题讨论】:

    标签: linq linq-to-sql


    【解决方案1】:

    LINQ to SQL 不适用于此任务,因此不要使用它。只需将插入转换为存储过程并将该过程添加到您的数据模型中。如果你做不到,用一点内联 SQL 写一个普通的函数。

    【讨论】:

      【解决方案2】:

      在设计器中打开您的 DBML 文件,并为映射指定一个键,无论您的数据库是否有键。这将解决您的问题。但是请注意,如果数据库中没有真正的密钥,则不能指望用于标识或其他任何内容的列。

      【讨论】:

        【解决方案3】:

        我能够使用复合键来解决这个问题。

        我在一个只包含两列的表上遇到了类似的问题:用户名、角色。 该表显然不需要标识列。因此,我创建了一个包含用户名和角色的复合键。这使我能够使用 LINQ 来添加和删除条目。

        【讨论】:

          【解决方案4】:

          您可以使用DataContext.ExecuteCommand 方法来运行您自己的自定义插入语句。

          或者,您可以将primary key 添加到列中,这将允许objects to be tracked 通过数据上下文进行插入/更新/删除。即使该列实际上不是数据库中的强制主键,这也将起作用(linq 怎么知道?)。如果您只进行插入而不在同一数据上下文中重复使用主键值,那么您会没事的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-01-27
            • 1970-01-01
            • 1970-01-01
            • 2012-01-21
            相关资源
            最近更新 更多