在Linq的临时表上更新查询
嘿,我是Linq的新手,我试图转换存储过程。但我有一个很难在SP编写更新查询在LINQ我的查询像在Linq的临时表上更新查询
UPDATE @tempTable1 SET someColumn = 1
FROM @tempTable1 p, @tempTable2 t2, NonTempTable nt
WHERE t1.id = t2.id
AND t1.id = nt.id
AND nt.status = 'abcd';
我在LINQ
var Obj = (from t1 in temp1 join t2 in tmp2 on t1.id equals t2.id
join nt in NonTempTable on t2.id equals nt.id
where nt.status == "abcd"
select t1).First();
Obj.somecolumn = 1;
Obj.SubmitChanges();
写了上述查询的以下转换,但我gettimg以下错误
Property or indexer 'AnonymousType#1.ProcedureID' cannot be assigned to -- it is read only
我只是有我的应用程序的数据库,我试图使用LINQPad将存储过程转换为LINQ
谁能告诉我如何将以上查询写入Linq?我还需要做些什么?
回答:
终于找到了我的上述问题的一个解决办法这是继
var Obj = (from t1 in temp1 join t2 in tmp2 on t1.id equals t2.id
join nt in NonTempTable on t2.id equals nt.id
where nt.status == "abcd"
select t1).First();
var anatherObj = (from o in Obj
select new { o.nonUpdatedColumn1, o.nonUpdatedColumn2, o.nonUpdatedColumn3, o.someColumn = 1});
而在“anatherObj”
回答:
你必须从你的tempTable1,tempTable2和NonTempTable创建一个实体。那么你应该可以通过Linq来处理这些表中的数据。请参阅http://msdn.microsoft.com/en-us/data/ff830362.aspx如何创建模型。
在创建它,您可以更新记录或适当记录并更改保存到数据库
var result = (from row in model.JoinedTable where row.status == "abcd"
select row).First();
result.someColumn = "1";
model.SaveChanges();
回答:
的LINQ是查询,不更新。为了更新数据您需要选择一个框架(或找出主要项目团队正在使用的),以便实现这一目标 - 实体框架,LinqToSQL或普通旧ADO.NET(SQlCommand
+ SqlConnection
等)。 )。
Linq内部没有内置机制来更新内存中的数据,更不用说将更改传播到数据源。即使使用实体框架 - 你可以可以使用Linq到得到你想要更新的对象,但实际的更新根本不使用Linq,只是属性设置器和方法如SaveChanges()
你在你的例子中。
以上是 在Linq的临时表上更新查询 的全部内容, 来源链接: utcz.com/qa/261884.html