我有一个“联结”表,用于存储用户的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;
答案 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
}
完成后,编辑问题以包含显示的异常。如果没有异常发生,那么请编辑您的问题,说明发生会发生什么不应该发生,或不发生什么事情应该发生。