Linq 2 Sql插入没有关系

Posted

技术标签:

【中文标题】Linq 2 Sql插入没有关系【英文标题】:Linq 2 Sql insert without relationship 【发布时间】:2011-05-17 10:49:30 【问题描述】:

我有 2 张桌子。 eg:其中一个是存储用户,另一个是存储订单。包含 UserId 作为外键的 Orders 表。我正在使用 Linq 2 Sql 进行数据访问操作。如果用户已经存在于数据库中,我想插入一个订单而不插入用户行。

我该怎么做?

提前致谢,

编辑:这是我遇到问题的代码:

try

    context.SocialEntities.InsertOnSubmit(entity);
    context.SubmitChanges();

catch (Exception ex)

    if (ex.Message.Contains("UserUniqueness"))
                         
        User user = context.Users.Where(u => u.SourceUserID == entity.User.SourceUserID).FirstOrDefault();
        if (user != null)
        
            user.SocialEntities.Add(entity);
            context.SubmitChanges();
        
    

UserUniqueness 是在 User 表中为名为 SocialSourceId 的列定义的唯一键约束。而且它不是主键。

【问题讨论】:

【参考方案1】:

将新订单添加到现有用户的Orders 集合中。

更新: 我建议,您在尝试插入之前先检查用户。我想,您尝试以某种方式添加的用户仍然在您的上下文中,并且在您下次调用 SubmitChanges 时再次提交。

【讨论】:

它仍然显示:违反 UNIQUE KEY 约束“UserUniqueness”。无法在对象“dbo.User”中插入重复键。用户表有唯一键约束 你对用户做了什么?请编辑您的问题并提供一些代码。 这没有任何帮助,抱歉。我建议,您在尝试插入之前先检查用户。我想,您尝试以某种方式添加的用户仍然在您的上下文中,并且在您下次调用 SubmitChanges 时再次提交。 这就是问题所在!你说的对!非常感谢!。我会接受你的回答,你可能想更新它!

以上是关于Linq 2 Sql插入没有关系的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Linq to SQL 中插入具有一对一关系的子对象

使用linq2sql的关系/外键?

LinQ to SQL 查询

LINQ中的关系划分?

使用LINQ访问数据库

LINQ 2 DB 动态插入表