走进Linq-Linq to SQL How do I(1)
[2] 走进Linq-Linq to SQL How do I(1)
[3] 走进Linq-Linq to SQL How do I(1)
[4] 走进Linq-Linq to SQL How do I(1)
[5] 走进Linq-Linq to SQL How do I(1)
系列文章导航:
不能不说的C#特性-迭代器(下),yield以及流的延迟计算
走进Linq-Linq to SQL How do I(1)
走进Linq-Linq to SQL How do I(2)
走进Linq-Linq to SQL How do I(3)
走进Linq-Linq to SQL源代码赏析 Table
走进Linq-Linq to SQL源代码赏析之Provider的初始化
走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq
但是不是所有的C#的方法都可以使用呢?答案是否定的。比如:
where post.Title.StartsWith("y")
select post.CreateDate.ToString("yyyy-MM-dd");
我想对最后查出来的文章的创建时间做个格式化,居然报错了,说不支持这种“翻译”。那看来每次我们做查询的时候是要先try一下。
上面只是做了筛选的实例,你还可以去尝试一下排序和分组,这个和Linq to Objects里的用法是一样的,你可以到前面的文章里复习一下。
Step 5:插入对象
本系列的文章到现在为止都是在介绍查询,难道Linq to SQL只能做查询么?不能向数据库添加数据?,肯定不是的:
//先实例化一个新的要插入的对象
Post post = new Post();
post.BlogId = 2;
post.Title = "test";
post.Body = "test,test,test,test";
post.CreateDate = DateTime.Now;
//调用Table的InsertOnSubmit方法
posts.InsertOnSubmit(post);
//把改变提交到数据库,这个时候才真正执行了
dbContext.SubmitChanges();
//提交修改后,你就可以查询新插入的post的Id了
Console.WriteLine(post.Id);
生成的SQL语句:
一个简单的不能再简单的insert into语句,加上一条返回新插入记录的标识值的语句。
如果你按照本文所说的一步步往下来,在执行上面的插入的时候肯定会碰到异常,这是因为,Id对应的数据表字段postid是该表的主键,你不应该在插入的时候赋值,有人说我实例化对象的时候确实没有给post的Id属性赋值啊,但是.net会在后台为我们将Id赋值为0,所以你要对映射对象做一下修改:
public int Id { get; set; }