我正在使用Linqpad v4.37.3尝试使用实体框架4.1连接到构建。我已经能够通过向导并创建连接。我使用的连接字符串为:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="EFEntities"
connectionString="metadata=res://*/Common.Database.DatabaseModel.csdl|res://*/Common.Database.DatabaseModel.ssdl|res://*/Common.Database.DatabaseModel.msl;
provider=System.Data.SqlClient;provider connection string='Data Source=ServerAddress;
Initial Catalog=database;User ID=username;Password=password;
MultipleActiveResultSets=True'" providerName='System.Data.EntityClient' />
</connectionStrings>
</configuration>
当我测试连接时,它说成功。但是当我尝试扩展数据库时,我收到以下错误:
无法投射类型&#39; EFEntities&#39;输入 &#39; System.Data.Entity.Infrastructure.IObjectcontextAdapter&#39;
我不太确定我需要改变什么来完成这项工作,而我似乎无法找到其他人解决这个问题。
答案 0 :(得分:2)
这是装配兼容性和支持EF 4.1 vs 4.2的问题:Fusion有时候是一个讨厌的野兽。试试最新的(4.37.5)测试版 - 它包含对EntityFramework的接口的重写。新版本的LINQPad不再静态引用EntityFramework.dll - 而是使用Reflection来调用EF成员,而Reflection.Emit则根据您引用的实际EF程序集实现接口。这应该摆脱你遇到的问题。如果新版本中有任何故障,请告诉我。
答案 1 :(得分:0)
版本4.37.5 beta为我解决了'IObjectcontextAdapter'问题。
我现在能够在左侧的对象浏览器中看到entites。
但是,我正在尝试执行的每个查询/语句都会导致以下错误:
Value cannot be null.
Parameter name: key
它似乎发生在甚至击中EF部分之前。
如果我尝试将以下内容作为C#程序运行:
void Main()
{
HibernatingRhinos.Profiler.Appender.EntityFramework.EntityFrameworkProfiler.Initialize();
}
或只是
void Main()
{
for (int i = 0; i++; i < 100)
{
// nothing
}
}
我正在使用EF 4.1。
编辑:对不起,这应该是回答Joe Albahari的回答。