兴国安邦

C# 3.0, Linq, Linq To Sql

博客园 首页 新随笔 联系 订阅 管理
  33 Posts :: 0 Stories :: 532 Comments :: 147 Trackbacks


博客园
CLR基础研究团队
|
CLR团队精品系列|C# 3.0专题

[Linq To Sql进阶系列]

目录导航


 

1 Linq To Sql进阶系列(一)-从映射讲起

本系列,或多或少,直接或间接依赖入门系列知识。但,依然追求独立成章。因本文作者水平有限,文中错误难免,敬请读者指出并谅解。本系列将会和入门并存。

2 Linq To Sql进阶系列(二)M:M关系

Linq To Sql进阶系列(一) 一文中,我们谈到了数据库中的两种基本关系1:M 1:1. 而现实世界中,还有一种M:M 的关系。比如,一个老师可以有多个学生,而一个学生也可以有多个老师。老师和学生的关系就是多对多的关系。这些关系在数据库中是如何反映的呢

3 Linq To Sql进阶系列(三)CUDLog

CUD就是Create, Update, Delete。在别人都写过了后,还有什么是新鲜的呢?如果,碰到了数据库自增型字段,在插入数据后,需要你自己去获取自增的值吗?

4 Linq To Sql进阶系列(四)User Define Function

Linq To Sql如何提供对User Define Function的支持的呢?如果,用户想使用数据库自定义的函数该怎么办呢?本文将详细为你阐述。

5 Linq To Sql进阶系列(五)Store Procedure

Store Procedure,存储过程。就先谈谈它与udf的区别吧。

6 Linq To Sql进阶系列(六)用object的动态查询与保存log

动态的生成sql语句,根据不同的条件构造不同的where字句,是拼接sql 字符串的好处。而Linq的推出,是为了弥补编程中的 Data != Object 的问题。我们又该如何实现用object的动态查询呢? 

7 Linq To Sql进阶系列(七)动态查询续及CLRSQL在某些细节上的差别

在上面一篇文章Linq To Sql进阶系列(六)中,我们提到了使用object的动态查询。本文在上文的基础上,再做更加深入的引申。同时修正上文中一些不妥的地方。提供相关源代码下载

[公告]

CLR团队公告】CLR团队精品系列活动公告邀请函团队纲领

posted on 2007-10-15 15:20 Tom Song 阅读(4616) 评论(6)  编辑 收藏 网摘 所属分类: C# 3.0Linq To Sql

Feedback

#1楼  2007-10-18 16:50 静水≈深流      
麻烦你帮忙解决几个关于linq to sql 的问题!!!

http://www.cnblogs.com/RunDeep/archive/2007/10/18/929251.html
  回复  引用  查看    

#2楼 [楼主] 2007-10-22 21:55 Tom Song      
1.缓存问题。
以往的做法是吧,数据库查询的信息,缓存在Hashtable中,现在想在 from u in db.User select u 去数据库查询之前去,系统的缓存中,看看,记录是否已经在缓存中存在。不知道大家怎么做的。
2.where查询条件
var test = from c in db.TestTables where c.ID == "1" select c 当这条记录不存在时,用 test.First() 法方时抛出异常。要确定TestTables 是否被实例化了,必须要补捉异常。用 test.FirstOrDefault()法方。可以通过判断 对象 test != null 来判定test对象是否被实例化了。是否有更好的方法来判定test对象是否被实例化了。
3. 更新数据
更新数据,首先要在 DataContext 中先去数据库select实例化该对象,然后再修改,在提交修改。如果通过别的方法实例化了对象,附加(Attach)到 db.TestTables.Attach(t,true)抛出异常“An entity can only be attached as modified without original state if it declares a version member or does not have an update check policy.”用db.TestTables.Attach(t)没有反应。如果我想通过其他方法实例化了对象,然后在更新到数据库中,怎么做?
4.默认值
LINQ中生成表的时候怎么样使用默认值。

http://www.cnblogs.com/RunDeep/archive/2007/10/18/929251.html
  回复  引用  查看    

#3楼 [楼主] 2007-10-22 22:00 Tom Song      
@静水≈深流
1, Linq 有自己的缓存,这个无须你去多设置。
2,你的方法很对,而且是最好的.
3,这个需要在主键上设置IsVersion,Attach方法最近做了改动,梢后会提。
4,目前,Linq To Sql对默认值的处理和Sql 有出入,在linq to sql中,要么,你就一直用默认值,要么就自己赋值.如果用默认值,在影射上加IsDbGenerated 而后,你就不能再给这个字段赋值.
  回复  引用  查看    

#4楼  2007-10-23 15:19 静水≈深流      
先谢谢 LZ
3,更新 IsVersion 的设置以前也试过
在主键上设置IsVersion = true 时
UPDATE SET 列=@变量 WHERE ID = @ID AND ID = @ID
但是用新增一个实体的时候就有问题了,(具体什么错误记不得了,回去看一下测试)
主键上设置IsVersion = false
UPDATE SET 列=@变量 WHERE ID = @ID AND 列=@变量 AND ... 所有的列

总感觉这个UPDATE 不怎么合理
在 NBear 中也有 附加和分离 感觉那种做法好多了

  回复  引用  查看    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索


China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!

相关文章:

相关链接: