我有一个映射表,如:
Article_to_Categories
条款ArticleID 类别ID
如何使用linq2sql插入此表?
答案 0 :(得分:2)
如果Article和Category表中存在相应的行,则这应与标准插入没有区别。
另一方面,如果这些表为空,那么在执行SubmitChanges之前,您需要在这些表中插入行。
Linq-to-Sql将为您管理优先级。
总而言之,我建议您只是尝试在Article_to_Categories表中插入行,看看会发生什么。
编辑:如果不了解如何在Linq-to-Sql中插入行,请考虑网络上的示例:
答案 1 :(得分:0)
根据我的经验,我在像这样的关联表中插入记录时遇到了类似的问题。对我有用的是尊重外键关系并添加对象而不仅仅是外键ID。
例如,这对我不起作用:
var newRec = new Article_To_Categories
{
Article_ID = 1,
Category_ID = 2
};
DataContext.Article_To_Categories.InsertOnSubmit(newRec);
DataContext.SubmitChanges();
对我有用的是:
var newRec = new Article_To_Categories
{
Article = DataContext.Articles.Where(a => a.Article_ID == 1).SingleOrDefault(),
Category = DataContext.Articles.Where(a => a.Category_ID == 2).SingleOrDefault()
};
DataContext.Article_To_Categories.InsertOnSubmit(newRec);
DataContext.SubmitChanges();
根据我的研究,我可以根据我的研究得出,如果我添加对象而不是ID,则会使用相关记录的内容正确更新生成的Article_To_Categories对象。更新过程的一部分是不应重新插入相关记录的通知。如果您只是使用ID更新新记录,我不相信LINQ-to-SQL会自动从Article和Category表中检索记录,这意味着那些相关记录将受到任何现有验证,无论是否来自对象或数据库。