2011-06-14 39 views
0

是否可以從未在模型中定義的視圖中檢索記錄,並使用列名或序號檢索其列值?EF從未定義的表/視圖中檢索實體

我寫這篇文章的代碼:

AppContext ctx = new AppContext("name=DbConnString"); 
string commandText = "SELECT V.ID, V.Code, V.Description FROM vw_UserDefinedView AS V"; 
ObjectQuery<DbDataRecord> query = new ObjectQuery<DbDataRecord>(commandText, ctx); 

但是當我試着執行它時發生了異常:

'vw_UserDefinedView' could not be resolved in the current scope or context. Make sure that all referenced variables are in scope, that required schemas are loaded, and that namespaces are referenced correctly. Near simple identifier, line 1, column 43. 

有沒有辦法做到這一點使用實體框架和ObjectContext的(或的DbContext) ?

最好的問候, 阿爾貝託

回答

0

不,這是不可能的。由於該消息已經聲明:「'vw_UserDefinedView'無法在當前範圍或上下文中解析。」上下文(.edmx)不知道此視圖。你必須認識到你正在查詢實體模型而不是數據庫!

如果你不想在你的實體模型這一觀點(無論何種原因),然後只需使用SqlCommandSqlConnectionSqlDataReader以執行有關vw_UserDefinedView語句。

UPDATE

也許這個環節可以進一步幫助你:因爲它是由用戶在運行時提供,是用戶定義的連列Entity Framework : Add Properties/Entities during runtime

+0

這種觀點是不存在的實體模型。我想使用實體框架的原因主要是因爲我不想管理多個連接字符串並保持數據庫的獨立性(SQL Server,Oracle等)。有沒有其他方法可以完成我想要做的事情?有沒有辦法在運行時向模型添加新的實體定義? – Alberto 2011-06-14 09:17:05

+0

不知道你是否可以添加實體def。在運行時。 – 2011-06-14 09:38:17

+0

不,你正在試圖拿起一把螺絲刀,並將它用作刀子。 EF完全不是爲了這個目的而設計的。 – Tridus 2011-06-14 09:57:31