【问题标题】:LINQ - Inserts not working with "junction" tableLINQ - 插入不适用于“联结”表
【发布时间】:2009-04-13 00:48:19
【问题描述】:

我有一个“联结”表,用于存储用户的用户 ID(与 aspnet_membership 表中的用户 ID 相同)和产品 ID。我已将此表添加到 .dbml 文件中。我正在尝试使用 LINQ 插入表中,但它失败了。联结表中的两个字段都设置为主键,但是,我在 .dbml 文件中没有 aspnet_membership 表(我也没有在两个表之间设置关系 - 它不会让我因为 userID 字段在aspnet_membership 不是主键)。这是我的代码(我在其他位置使用过类似的代码没有问题,所以我怀疑 .dbml 配置是问题所在)。任何想法为什么插入失败?

bool success = false;
ASIStoreDataDataContext storeContext = new ASIStoreDataDataContext();
try
{
    if (HttpContext.Current.User.Identity.IsAuthenticated)
    {
        STOR_NewsletterUser newsSub = new STOR_NewsletterUser();
        newsSub.SNWS_NewsLetterID = newsletterID;
        newsSub.UserID = userID;
        storeContext.STOR_NewsletterUsers.InsertOnSubmit(newsSub);
        storeContext.SubmitChanges();
        success = true;
    }
}
catch { }

return success;

【问题讨论】:

  • 请正确格式化您的问题。
  • @Arkain:问题解决了。 @Sam:阅读stackoverflow.com/editing-help
  • 您的“连接”表更正式地称为“交叉”表:只是想您想知道。
  • @Joel:我认为您的意思是“关联实体”

标签: asp.net linq


【解决方案1】:

首先,摆脱那个 try/catch 块。任何随机异常都可能在那里发生,而您不会知道它,因为您正在吃异常。不要永远那样做。

现在,也许如果您发布了异常或其他您认为插入失败的原因,我可以给您更好的回应。相反,我能建议的最好的方法是您将代码更改如下:

ASIStoreDataDataContext storeContext = new ASIStoreDataDataContext();
try
{
    if (!HttpContext.Current.User.Identity.IsAuthenticated)
        return false;

    STOR_NewsletterUser newsSub = new STOR_NewsletterUser();
    newsSub.SNWS_NewsLetterID = newsletterID;
    newsSub.UserID = userID;
    storeContext.STOR_NewsletterUsers.InsertOnSubmit(newsSub);
    storeContext.SubmitChanges();
    return true;
}
catch (Exception ex) {
    Console.WriteLine(ex.ToString()); // Or Debug.Print, or whatever
    throw;                            // Don't eat the exception
}

完成后,编辑您的问题以包含显示的异常。如果没有发生异常,则编辑您的问题,说明应该发生的发生的情况,或者应该发生的不会发生的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 2016-03-15
    相关资源
    最近更新 更多