LINQ - 插入不与“联结”表一起使用

时间:2009-04-13 00:48:19

标签: asp.net linq

我有一个“联结”表,用于存储用户的userID(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;

1 个答案:

答案 0 :(得分: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
}

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