2015-07-10 42 views
1

我試圖執行使用實體框架插入查詢執行插入查詢。如何使用實體框架

我有這樣的事情:

Context.database.ExecuteSqlCommand("Insert into tableName Values({0},{1},{2}", param1, param2, param3) 

但這是拋出一個錯誤

不正確的語法附近 '@ P1'

這是什麼 '@ P1'?

+5

爲什麼要在實體框架中編寫SQL來執行插入操作? – DLeh

+0

@DLeh是的,我同意,我會使用SQL命令只執行存儲過程 –

+0

我需要做一些動態的插入到表,其中目標表可能會改變。他們需要實體框架。他們說要使用動態插入查詢 –

回答

6

你缺少你的INSERT年底關閉)。

它應該是:

Context.database.ExecuteSqlCommand("Insert into tableName Values({0},{1},{2})", param1, param2, param3) 

或者,你可以使用的SqlParameter類:

Context.Database.ExecuteSqlCommand(
    "Insert into tableName Values(@id, @firstName, @lastName)", 
    new SqlParameter("id", id), 
    new SqlParameter("firstName", firstName), 
    new SqlParameter("lastName", lastName) 
); 
1

除了您爲什麼要寫SQL明顯的問題,看來你缺少一個右括號,之後第三個{2}參數:

Contex.database.ExecuteSQLCOmmand(@"Insert into tableName Values({0},{1},{2})",param1,param2,param3); 

那麼它也是一個很好的做法是指定列名,如下所示:

Contex.database.ExecuteSQLCOmmand(@"Insert into tableName (col1, col2, col3) Values({0},{1},{2})",param1,param2,param3);