接触Linq不久,虽然其生成model类方便,但封装的操作数据库的方法,就像和数据库隔了层纱,没有办调试到具体的sql语句
数据访问层写了一个插入方法如下
public int addClass(Model.G_class M_class)
{
Table<Model.G_class> table = DB.GetTable<Model.G_class>();
try
{
table.InsertOnSubmit(M_class);
DB.SubmitChanges();
return 1;
}
catch
{
return 0;
}
}
G_class是一个班级表,主键是class_id,通过前台传来的实体数据对象M_class,如果M_class的class_id值没有在数据库中,那么插入没有问题,
而一旦class_id已经存在了,那就会插入失败,DB.SubmitChanges();抛出异常为“不能添加其键值已在使用中的实体”,以后再从前台传来的实体数据
无论class_id存在与否都会抛出这个异常,网上没有找到类似问题,最后只好自己写了一个id检测方法
public bool checkId(string id)
{
var temp = from row in DB.G_class where row.class_id == id && row.is_del == false select row;
if (temp.Count() != 0)
return true;
else
return false;
}
在执行插入前先检测一下主键是否已存在,问题虽然解决了,但不知道为什么会这样,希望看到这篇文章的人,有知道的留言指教一二。
本文描述了在使用Linq进行数据插入时遇到的问题,当尝试插入的实体主键值已在数据库中存在时,`DB.SubmitChanges()`会抛出“不能添加其键值已在使用中的实体”的异常。作者通过自定义id检测方法解决这个问题,但对为何会出现此异常感到困惑,并希望读者提供解答。

732

被折叠的 条评论
为什么被折叠?



