在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

回到顶部