有什麼方法可以在Entity Framework中實現跨數據庫查詢?假設我有兩個Entities User和Post,User實體位於database1,Post位於database2,這意味着這些實體位於不同的數據庫中。我應該如何在Entity Framework中獲取用戶的帖子?EF中的跨數據庫查詢
11
A
回答
20
EF上下文不支持跨數據庫查詢。您需要通過SQL View(or synonym)公開database1中的帖子並將其用作該數據庫的一部分。
4
9
您可以使用ExecuteStoreQuery
,如:
var myOb = context.ExecuteStoreQuery<PlainOldClrObject>(
@"select *
from db1.dbo.table1 t1
join db2.dbo.table2 t2
on t2.t1_id = t1.id
where t1.id = {0}",
table1Id).FirstOrDefault();
你必須定義一個PlainOldClrObject
類列與getter/setter方法的屬性,如:
class PlainOldClrObject
{
public int Id (get; set; }
public int Name (get; set; }
...
}
+0
+1好點。最簡單的解決方案往往是最好的。 –
13
我知道這是一個古老的線程,但實際上。這個有可能。如果數據庫位於同一臺服務器上,則只需使用DbCommandInterceptor
即可。
作爲一個例子,如果我將DbCommandInterceptor
附加到MyContext,
我可以攔截所有命令執行並將查詢中的指定表替換爲我的full-db路徑。
public override void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)
{
// Here, I can just replace the CommandText on the DbCommand - but remember I
// want to only do it on MyContext
var context = contexts.FirstOrDefault() as MyContext;
if (context != null)
{
command.CommandText = command.CommandText
.Replace("[dbo].[ReplaceMe1]", "[Database1].[dbo].[Customers]")
.Replace("[dbo].[ReplaceMe2]", "[Database2].[dbo].[Addresses]")
.Replace("[dbo].[ReplaceMe3]", "[Database3].[dbo].[Sales]");
}
base.ReaderExecuting(command, interceptionContext);
}
的好處也對這種做法的是,EF模型映射仍然工作正常,尊重列屬性,不需要意見,並要求沒有存儲的特效。
相關問題
- 1. SQL跨數據庫查詢
- 2. MongoDB跨數據庫查詢
- 3. Android數據庫查詢跨行檢查
- 4. 跨django的數據庫查詢ManyToManyField
- 5. 跨數據庫查詢是可能的
- 6. .mdf文件和跨數據庫查詢?
- 7. 跨多個數據庫查詢表
- 8. SQL Azure - 跨數據庫查詢
- 9. 構建這個跨數據庫查詢
- 10. 跨數據庫查詢,循環數據庫
- 11. 設置數據庫分片 - 沒有跨數據庫查詢
- 12. 跨數據庫查詢引擎Oracle數據庫使用Qt
- 13. 在存儲過程中更改數據庫名稱和跨數據庫查詢
- 14. EF:交叉edmx(相同的數據庫)linq-to-entites查詢
- 15. EF和LINQ查詢數據庫的速度
- 16. SQL Server Profiler顯示針對主數據庫的EF查詢?
- 17. 使用EF發佈針對數據庫的Linq查詢使用EF
- 18. 自定義函數來查詢數據庫跨Django的意見
- 19. 查詢數據庫中的數據
- 20. 如何在PHP中構建一個跨數據庫查詢?
- 21. 無法在SQL Azure中執行跨數據庫查詢
- 22. 在azure SQL中跨數據庫DML查詢
- 23. 跨不同用戶的2個數據庫的MySQL查詢
- 24. EF查詢包括與聚合數據
- 25. 如何強制EF代碼優先查詢數據庫?
- 26. 如何查詢EF代碼第一個數據庫
- 27. EF Code First支持查詢多個數據庫嗎?
- 28. 查詢數據庫
- 29. 查詢數據庫
- 30. 數據庫 - 查詢?
可能重複的[實體框架 - 如何管理不同數據庫中的表,但在同一臺服務器上?](http://stackoverflow.com/questions/11544516/entity-framework-how-to-manage-tables-in -different-databases-but-on-the-same-s) – ken2k
是的,我在database1中公佈了帖子,但我不明白,你是通過SQL視圖還是別名**來表達**? – saber