public class EntityFrameworkConfiguration : DbConfiguration
{
public EntityFrameworkConfiguration()
{
this.SetModelCacheKey(ctx => new EntityModelCacheKey((ctx.GetType().FullName + ctx.Database.Connection.ConnectionString).GetHashCode()));
}
}
为了使上面的代码工作,我在web.config中添加了以下行
但是对于我正在使用程序集引用的其他项目,我会遇到异常:
{"实体使用默认的DbConfiguration实例 ' EntityFrameworkConfiguration'之前的框架类型是 发现。 ' EntityFrameworkConfiguration'的实例必须设定 在应用程序启动之前使用任何实体框架功能或 必须在应用程序的配置文件中注册。看到 http://go.microsoft.com/fwlink/?LinkId=260883了解更多信息。"}
答案 0 :(得分:3)
您的问题并未说明您使用此自定义DbConfiguration的方式。
您可以通过几种不同的方式获得此错误。
配置样式设置
如此处所述:Entity Framework Config File Settings
配置为代码
如此处所述:Entity Framework Code-Based Configuration (EF6 onwards)
你可以通过像DbConfiguration.SetConfiguration(xxxx)这样的方式hack
。我根本没有发现它有用。
这真正归结为你如何构建你的DbContext。
配置文件样式构造函数 https://github.com/aspnet/EntityFramework6/blob/master/src/EntityFramework/DbContext.cs#L75 没有参数 - EF6使用configuraiton文件来确定要使用的正确的DbCofniguration
有一些"连接字符串"参数EF6正在使用配置文件来确定DbConfiguration
没有配置或错误的配置 - 你会得到这种排序或异常
配置为代码样式构造函数 https://github.com/aspnet/EntityFramework6/blob/master/src/EntityFramework/DbContext.cs#L139
我认为这会带来更好的控制。
对您的DbContext进行属性,然后使用手动创建的DbConnection
public class EntityFrameworkConfiguration : DbConfiguration
{
public EntityFrameworkConfiguration()
{
this.SetModelCacheKey(ctx => new EntityModelCacheKey((ctx.GetType().FullName + ctx.Database.Connection.ConnectionString).GetHashCode()));
}
}
[DbConfigurationType(typeof(EntityFrameworkConfiguration))]
public class MyContext : DbContext
{
public MyContext(DbConnection existingConnection, bool contextOwnsConnection)
: base(existingConnection, contextOwnsConnection)
{ }
public DbSet<Stuff> Stuff { get; set; }
}
using(var conn = new SqlConnection(asqlserverConnectionString))
using (var db = new MyContext(conn, true))
{
var value = await db.Stuff.Where(s => s.xxx.Equals(primaryKey)).Select(s => new { s.BinaryContent } ).SingleOrDefaultAsync();
}
答案 1 :(得分:1)
如果您使用的是Code-based configuration,请尝试这样更新配置文件:
tag_key_f = input("Enter Tag Name to find: ")
tag_val_f = input("Enter Tag Value to find: ")
instances = ec2.describe_instances(Filters=[{'Name': 'tag:tag_key_f', 'Values': [tag_val_f]}])
答案 2 :(得分:0)
就我而言,我有两个不同的edmx文件,并且都位于不同的类库中。 当我在同一个项目中添加这两个库时出现此错误。
我没有任何线索可以找到答案,但是;当我从第一个DbContext类调用任何方法时,第二个方法就像奇迹一样发生了。当第二个上下文类首次调用时,抛出此错误。 我的Ef版本是:6.4