想问下linq 基本语法格式什么是怎样的?和SQL相比较而言,对于初学者应该以什么样的逻辑思维考虑数据操作问题?
普通的Update 多条件修改又怎么样实现,最好中文描述下逻辑思维
linq是一种通用的数据访问语言,语法类似SQL。操作数据库时有LINQ to SQL、LINQ to Entities来选择。当采用LINQ to SQL或者LINQ to Entities时就是一种ORM映射,每天数据库记录就是一个对象。Update的时候只要更改这个对象的属性即可。
具体的语法,我建议参考 http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
这个链接是LINQ 101 smaples,这么多例子基本把每一种情况都说到了。
update
merchantInfo
set merchantInfo.tel_no = @tel_no
inner join merchantUpdate
where
merchantInfo.merchant_id = merchantUpdate.mercahnt_id
and
merchantInfo.login_name = merchantUpdate.merchantUpdate.login_name
那这个SQL语句例子处理的话如何进行转换,只进行语句操作就好,别的什么设置操作不用解释,我个人写的是这样的
merchantinfo merchantInfo = ( from merchant in edm.merchantinfo where merchant.merchant_id == merchantUpdate .merchantId
and merchant.login_name = merchantUpdate.login_name
select merchant ).Single();
但是貌似完全不对!根本不清楚怎样的逻辑
LINQ不是简单的SQL翻译,主要目的是实现ORM,将数据以对象的方式实现。
你要实现的是一个批处理更新,这时候如果用LINQ对象的方式,确实会显得比较笨拙。
因为LINQ是这样操作的,
首先,取得要更新的对象
var query= from c in db.MerchantInfo
join d in db.MerchantUpdate
on c.merchant_id equals d.merchant_id and c.login_name equals d.login_name
select c
for each row in query
row.tel_no=getTelNofromMerchantUpdate(row.merchant_id, row.login_name)
'必须自己实现getTelNoFromMerchantUpdate
next
db.submitchanges
所以对于类似你这样的批量操作语名,
LINQ也支持
db.executeCommand("update merchantInfo set merchantInfo.tel_no = @tel_no inner join merchantUpdate
where merchantInfo.merchant_id = merchantUpdate.mercahnt_id and merchantInfo.login_name merchantUpdate.merchantUpdate.login_name")
大致上是这个意思,没有打开VS,有些关键字可能是错的,楼下请不要吹毛求疵,谢谢!
【LINQ不是简单的SQL翻译,主要目的是实现ORM】这句话是不对的。LINQ to SQL的主要目的才是实现ORM,LINQ本身和ORM毛关系都没有。LINQ本身的目的是一种通用的查询语言,比如内存中的集合对象、关系型数据库、XML等等,换句话说,是希望我们采用一种统一的语法,能查询各类数据,而且是可扩展的,所以也有什么LINQ to SharePoint等等各种扩展的。
@ocean: 偷懒了,楼主想问的是LINQ TO SQL,
我回答的也是LINQ TO SQL。至于LINQ,如你所说。
其实没那么麻烦,就是sql的那几个关键字而已,你就当sql用就行了
LINQ的用途不是做数据库查询的,是会对通用的数据集合用的。
和SQL长的比较像而已,没什么必须的联系。
ORM是通过LINQ的语法长处配合Expression Tree实现。