有什么方法可以在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. 跨数据库查询是可能的
- 5. 跨django的数据库查询ManyToManyField
- 6. Azure SQL数据库上的跨数据库查询
- 7. SQL Azure - 跨数据库查询
- 8. 跨多个数据库查询表
- 9. 构建这个跨数据库查询
- 10. 跨数据库查询与复制
- 11. .mdf文件和跨数据库查询?
- 12. 跨数据库查询,循环数据库
- 13. 跨数据库查询引擎Oracle数据库使用Qt
- 14. 设置数据库分片 - 没有跨数据库查询
- 15. 在存储过程中更改数据库名称和跨数据库查询
- 16. EF:交叉edmx(相同的数据库)linq-to-entites查询
- 17. EF和LINQ查询数据库的速度
- 18. SQL Server Profiler显示针对主数据库的EF查询?
- 19. 使用EF发布针对数据库的Linq查询使用EF
- 20. 自定义函数来查询数据库跨Django的意见
- 21. 查询数据库中的数据
- 22. 如何在PHP中构建一个跨数据库查询?
- 23. 无法在SQL Azure中执行跨数据库查询
- 24. 如何在HSQL DB中激发跨数据库查询?
- 25. 在azure SQL中跨数据库DML查询
- 26. 跨不同用户的2个数据库的MySQL查询
- 27. EF查询包括与聚合数据
- 28. 如何查询EF代码第一个数据库
- 29. EF Code First支持查询多个数据库吗?
- 30. 如何强制EF代码优先查询数据库?
可能重复的[实体框架 - 如何管理不同数据库中的表,但在同一台服务器上?](http://stackoverflow.com/questions/11544516/entity-framework-how-to-manage-tables-in -different-databases-but-on-the-same-s) – ken2k
是的,我在database1中公布了帖子,但我不明白,你是通过SQL视图还是别名**来表达**? – saber