将近一年前,我发了个帖子:
开他娘的源!自己写的LinqToAccess!!!
现在看来真是惭愧,可笑,最近一年,技术方面学习的不多,对linq的看法有所进度,但是对于大神们当时的一些评论还是看不大懂,希望各位大神再点播一二。在我看来,linq甭管是to什么,都只不过是对LinqtoObject的一个延伸:
将各种其他的数据库,Xml,或者其他的形式转化为Object,再用linq的方式来对Object做操作,(微软基本上已经用IEnumerable<out T>接口和扩展方法都搞定了linqtoObject),然后再实现当Object改变之后,下面数据库或者XML的改变(不知道各位大神是否同意我的看法?)所以我当时的linq2access其实就是实现了access到实体类的和转化,和对实体类执行增删查改之后,再反应到Access的变化。
我从实体类到Access的变化确实挺原始的,但是本身Access也不是什么数据库,真的在这方面有要求,也就不用Access了。linq2Sql在这方面我大概看了看:
个人认为从实体类到sql数据库的变化中,
System.Data.Linq.Table<TEntity> : IQueryProvider, ITable, IListSource, ITable<TEntity>, IQueryable<TEntity>, IEnumerable<TEntity>, IQueryable, IEnumerable where TEntity : class
精华就在这个类中了。这个Table<TEntity>类实现了诸多接口,而这些接口中的各个方法实现了实体类到Sql表。caozhy大神当时说的这些:“从技术上来说,lz的方案还非常原始,甚至都不能算LinqToAccess。我们说LinqToSQL,它的核心在于,将IQueryable 接口在幕后转换为SQL查询。并且智能地处理了SQL函数<-.NET函数的转化,Lambda表达式,表达式树等等。这个Provider是Linq2SQL的精髓。”
关于IQueryable接口定义,里面是空的。我不清楚这个空接口的含义?还有IQueryProvider, ITable, IListSource, ITable<TEntity>, IQueryable<TEntity>, IEnumerable<TEntity>, IQueryable, IEnumerable where TEntity等诸多接口各自的具体含义。是不是说,如果当时我把实体类到Access的变化的方法不用自己的原始方式实现(像:a.Insert_y(nta);a.Delete_y(dta);),而是继承某个特定接口,(IQueryable?)在接口的方法里面实现,就更好一些了?
开他娘的源!自己写的LinqToAccess!!!
现在看来真是惭愧,可笑,最近一年,技术方面学习的不多,对linq的看法有所进度,但是对于大神们当时的一些评论还是看不大懂,希望各位大神再点播一二。在我看来,linq甭管是to什么,都只不过是对LinqtoObject的一个延伸:
将各种其他的数据库,Xml,或者其他的形式转化为Object,再用linq的方式来对Object做操作,(微软基本上已经用IEnumerable<out T>接口和扩展方法都搞定了linqtoObject),然后再实现当Object改变之后,下面数据库或者XML的改变(不知道各位大神是否同意我的看法?)所以我当时的linq2access其实就是实现了access到实体类的和转化,和对实体类执行增删查改之后,再反应到Access的变化。
我从实体类到Access的变化确实挺原始的,但是本身Access也不是什么数据库,真的在这方面有要求,也就不用Access了。linq2Sql在这方面我大概看了看:
个人认为从实体类到sql数据库的变化中,
System.Data.Linq.Table<TEntity> : IQueryProvider, ITable, IListSource, ITable<TEntity>, IQueryable<TEntity>, IEnumerable<TEntity>, IQueryable, IEnumerable where TEntity : class
精华就在这个类中了。这个Table<TEntity>类实现了诸多接口,而这些接口中的各个方法实现了实体类到Sql表。caozhy大神当时说的这些:“从技术上来说,lz的方案还非常原始,甚至都不能算LinqToAccess。我们说LinqToSQL,它的核心在于,将IQueryable 接口在幕后转换为SQL查询。并且智能地处理了SQL函数<-.NET函数的转化,Lambda表达式,表达式树等等。这个Provider是Linq2SQL的精髓。”
关于IQueryable接口定义,里面是空的。我不清楚这个空接口的含义?还有IQueryProvider, ITable, IListSource, ITable<TEntity>, IQueryable<TEntity>, IEnumerable<TEntity>, IQueryable, IEnumerable where TEntity等诸多接口各自的具体含义。是不是说,如果当时我把实体类到Access的变化的方法不用自己的原始方式实现(像:a.Insert_y(nta);a.Delete_y(dta);),而是继承某个特定接口,(IQueryable?)在接口的方法里面实现,就更好一些了?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货