2012-06-01 54 views
0

我使用dapper.net如下執行INSERT:DynamicObject不包含所有選定列

var columns = conn.Query("INSERT INTO MyTable" + 
        "(Col1, Col2, Col3)" + 
        "VALUES (@Col1, @Col2, @Col3)" + 
        "SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity()", 
        myObj).Single(); 

myObj.Id = columns.Id; 
myObj.ComputedValue = columns.ComputedColumn; 

查詢成功,但一個例外是在myObj.ComputedValue = columns.ComputedColumn;'System.Dynamic.DynamicObject' does not contain a definition for 'ComputedColumn'

拋出

正如您可能收集的一樣,ComputedColumn是表格上的一個計算列,這就是爲什麼我要在插入Id後將其返回。任何想法爲什麼這將失敗?

+0

你可以發佈你的表結構嗎? – Lamak

回答

1

想通了 - 我在這張桌子上有一個反向插入觸發器。觸發器返回Id以便與Entity Framework(我已經切換到Dapper)很好地發揮作用。 SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity()實際上並沒有返回一行,但小靈通正確加載了由觸發器返回的ID。將觸發器更改爲返回Id和ComputedColumn,一切正常!

相關問題