走进Linq-Linq to SQL How do I(3)
[1] 走进Linq-Linq to SQL How do I(3)
[2] 走进Linq-Linq to SQL How do I(3)
[3] 走进Linq-Linq to SQL How do I(3)
[4] 走进Linq-Linq to SQL How do I(3)
[5] 走进Linq-Linq to SQL How do I(3)
[2] 走进Linq-Linq to SQL How do I(3)
[3] 走进Linq-Linq to SQL How do I(3)
[4] 走进Linq-Linq to SQL How do I(3)
[5] 走进Linq-Linq to SQL How do I(3)
系列文章导航:
不能不说的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
实际上我们可以看看,这个AutoSync是如何影响Linq to SQL的行为的(打开前面我们曾经建的那个博客园的例子,如果你没有创建一个强烈建议你回到前几篇按照那里的步骤新建)
我们执行一下对Post的插入:
DataContext dbContext = new DataContext(ConfigurationManager.ConnectionStrings["CnBlogs"].ConnectionString);
dbContext.Log = Console.Out;
var post = new Post {
BlogId = 1,
Title = "Linq to SQL How do I(3)",
Body = "废话一堆",
};
dbContext.GetTable<Post>().InsertOnSubmit(post);
dbContext.SubmitChanges();
dbContext.Log = Console.Out;
var post = new Post {
BlogId = 1,
Title = "Linq to SQL How do I(3)",
Body = "废话一堆",
};
dbContext.GetTable<Post>().InsertOnSubmit(post);
dbContext.SubmitChanges();
看看生成的SQL代码:
在insert的代码下面,我们还会看到一个select的代码,将postid和createdate给查询回来,但我们并没有执行查询操作啊,原来这就是AutoSync在使坏,在默认的时候IsDbGenerated为true的列是被会查出来返回的。为了检查一下说的是不是对的,我将Post的Title属性修改一下:
[Column(AutoSync=AutoSync.Always)]public string Title { get; set; }
然后再执行上面 插入代码,看看生成的SQL又将如何呢:
呵呵,生成的select语句也将Title给查回来了。
现在应该明白这个AutoSync的意义了吧,你可以自己一一试验。