首页 新闻 会员 周边

关于linq中的插入数据和查询数据的问题?

0
悬赏园豆:30 [已解决问题] 解决于 2009-08-06 20:53

1.查询的数据如果为空的话,要报一个异常,怎么解决?

例如:通过用户名查询用户密码,如果没有该用户就报异常

string password = new DataCradDataContext().UserInfo.Single(u => u.UserId == userId).PassWord;

 

2.插入数据后,如何知道成功了,还是失败了?

例如:InsertOnSubmit()和SubmitChanges()方法返回怎么都是void啊,那怎么知道插入数据成功没有?

//添加用户
new DataCradDataContext().UserInfo.InsertOnSubmit(userInfo);
//确认修改
new DataCradDataContext().SubmitChanges();

 

望大虾举例说明,不胜感激!

不完全思想的主页 不完全思想 | 初学一级 | 园豆:56
提问于:2009-08-06 16:58
< >
分享
最佳答案
0

1.需要先判断有没有返回结果,应该用SingleOrDefault而不是Single

var user = new DataCradDataContext().UserInfo.SingleOrDefault(u => u.UserId == userId);

string password;

if(user != null)
{
password
= user.PassWord;
}

 

2.在SubmitChanges()语句后判断userInfo.UserId是否为0

收获园豆:30
slokra | 菜鸟二级 |园豆:264 | 2009-08-06 18:10
呵呵,正好看看:http://www.cnblogs.com/dushouke/archive/2009/06/29/linq-to-sql-retake-Identity-value.html
MicroCoder | 园豆:554 (小虾三级) | 2009-08-06 19:27
其他回答(2)
0

1.用DataCradDataContext().UserInfo.SingleOrDefault进行查询,检查返回的结果是不是null

2.你这样做的话,好像没有异常就是成功了:) 如果你担心没有插进去,可以再查询一次

排骨虾 | 园豆:401 (菜鸟二级) | 2009-08-06 17:22
再查一次肯定影响性能
支持(0) 反对(0) qianbao | 园豆:195 (初学一级) | 2009-08-07 13:20
0
DataContext.GetChangeSet 方法 可以跟踪的已修改对象的访问
不过貌似这个方法返回的受影响的行数和数据库受影响的行数有出入。
MicroCoder | 园豆:554 (小虾三级) | 2009-08-06 17:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册