我有一个映射表,如:
Article_to_Categories
文章ID 类别ID
如何使用 linq2sql 插入此表?
我有一个映射表,如:
Article_to_Categories
文章ID 类别ID
如何使用 linq2sql 插入此表?
如果文章和类别表中存在相应的行,这应该与标准插入没有什么不同。
另一方面,如果这些表是空的,那么您需要在执行 SubmitChanges 之前将行插入到这些表中。
Linq-to-Sql 将为您管理优先级。
总而言之,我建议您只需尝试将行插入 Article_to_Categories 表中,看看会发生什么。
编辑:如果不明白如何在 Linq-to-Sql 中插入一行,请考虑网络上的示例:
根据我的经验,在像这样的关联表中插入记录时,我也遇到过类似的问题。对我有用的是尊重外键关系并添加对象而不仅仅是外键 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 表中检索记录,这意味着这些相关记录将受到任何现有验证,无论是来自对象或数据库。