首页 新闻 搜索 专区 学院

关于linq的问题

0
悬赏园豆:10 [已关闭问题]

linq to sql 是直接读写数据库吧!

linq to 实体 是通过实体去操作数据库呢还是直接对内存中的数据进行操作。

比如我在dataset中有三张表。

用linq可以查询这三张表里的数据吗?

问题补充: 如果linq可以直接操作内存。 那缓存策略是不是相对好做很多啊?
cnbloger的主页 cnbloger | 初学一级 | 园豆:105
提问于:2009-08-05 17:27
< >
分享
其他回答(1)
0

Linq To Sql 与 Linq To Entity是差不多的,就是两者模型不一样,Linq To Sql是直接照搬的数据库模型,而Linq To Entity与数据库模型不尽相同,更具面向对象特征。

比如对于Room表中的UserID字段来说,Linq To Sql就是直接取用了这个ID号的值,而Linq To Entity则是将其指向一个User对象引用。

此外,Linq To Entity还支持更多的面向对象特征,比如继承。

两者都是通过模型生成的实体而访问数据库,它们自身也有缓存策略,对于重复访问的内容可以直接从内存中的缓存调取。

访问Dataset和Linq To Entity、Linq To Sql完全是两码事,它们都是强类型的访问,而Dataset是弱类型的,并且即使能访问Dataset,也是Linq To Object范畴。

建议学习和使用Linq To Entity,即Ado.Net Entity Framework,这是微软的侧重发展方向。

斯克迪亚 | 园豆:4124 (老鸟四级) | 2009-08-05 18:10
关于Linq To Entity:建议不要用它做复杂的查询。因为它使用的是标准sql,在某些时候会绕弯路,比如这个简单的分页+排序查询:gse.ShuffledTicketSet.OrderBy(t => t.ticket_idx).Skip(subsetIndex * subsetSize).Take(subsetSize).ToList(); 如果你把sql打印出来会让你吓一跳:)
支持(0) 反对(0) 排骨虾 | 园豆:401 (菜鸟二级) | 2009-08-06 17:31
0

Ado.Net Entity Framework目前只支持sql server,Oracle的估计还得等一段时间,重要的是Lampad语法.

另:

Entity Framework(EF)存取Entity的三种方式。

LINQ to Entities 直接通过LINQ存取,可完全将程序与数据库分离,由LINQ在内部自动使用Object Service进行数据库操作
Object Service 可以透过Entity SQL(eSQL)来存取Entity,并且直接以对象的方式来存取结果集(因为结果集本身就是对象的集合)。
EntityClient 通过过类似ADO.NET 的方法,以及 Entity SQL 存取 Entity。
lae | 园豆:205 (菜鸟二级) | 2009-08-05 23:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册