最近帮朋友做一个报名站,非常简单,于是拿.NET 3.5特别是LINQ to SQL来练练手。
一切顺利,唯独遇到一个小问题:有些记录,我只想每个用户在数据库中只拥有一条记录,如果数据库中已经存在记录,则用新的内容对原数据UPDATE,没有的话则INSERT。利用异常处理走了个小偏门,感觉不能算是正统的办法,希望哪位看到给指导一下。
代码如下:
1
public
partial
class
Test : System.Web.UI.Page
2 {
3protected void InsertOrUpdateDate()
4{
5 GraduateRegisterDataContext context = new GraduateRegisterDataContext(StaticData.ConnectionString);
6 try {
7 // 记录存在,检索后修改ProvinceOf值为2
8 FamilyInfo family = context.FamilyInfo.Single(f => f.NationalId == "3");
9 family.ProvinceOf = "200";
10 }
11 catch (InvalidOperationException inex) {
12 // 记录不存在,触发InvalidOperationException异常,创建新对象后插入
13 FamilyInfo family = new FamilyInfo {
14 Address = "1",
15 ApplyReason = "1",
16 CityOf = "1",
17 NationalId = "3",
18 DistrictOf = "1",
19 FinacialStatus = "1",
20 IsApplyGrant = true,
21 ZipCode = "1",
22 ProvinceOf = "1"
23 };
24 context.FamilyInfo.InsertOnSubmit(family);
25 }
26 finally {
27 context.SubmitChanges();
28 }
29}
2 {
3protected void InsertOrUpdateDate()
4{
5 GraduateRegisterDataContext context = new GraduateRegisterDataContext(StaticData.ConnectionString);
6 try {
7 // 记录存在,检索后修改ProvinceOf值为2
8 FamilyInfo family = context.FamilyInfo.Single(f => f.NationalId == "3");
9 family.ProvinceOf = "200";
10 }
11 catch (InvalidOperationException inex) {
12 // 记录不存在,触发InvalidOperationException异常,创建新对象后插入
13 FamilyInfo family = new FamilyInfo {
14 Address = "1",
15 ApplyReason = "1",
16 CityOf = "1",
17 NationalId = "3",
18 DistrictOf = "1",
19 FinacialStatus = "1",
20 IsApplyGrant = true,
21 ZipCode = "1",
22 ProvinceOf = "1"
23 };
24 context.FamilyInfo.InsertOnSubmit(family);
25 }
26 finally {
27 context.SubmitChanges();
28 }
29}