相关疑难解决方法(0)

EF5获取此错误消息:无法检查模型兼容性,因为数据库不包含模型元数据

我有这个错误消息,每次运行应用程序时都会继续显示.我正在使用实体Framework 5: Code First

这是错误信息,

System.NotSupportedException: Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only be checked for databases created using Code First or Code First Migrations.
   at System.Data.Entity.Internal.ModelCompatibilityChecker.CompatibleWithModel(InternalContext internalContext, ModelHashCalculator modelHashCalculator, Boolean throwIfNoMetadata)
   at System.Data.Entity.Internal.InternalContext.CompatibleWithModel(Boolean throwIfNoMetadata)
   at System.Data.Entity.Database.CompatibleWithModel(Boolean throwIfNoMetadata)
   at System.Data.Entity.DropCreateDatabaseIfModelChanges`1.InitializeDatabase(TContext context)
   at System.Data.Entity.Database.<>c__DisplayClass2`1.<SetInitializerInternal>b__0(DbContext c)
   at System.Data.Entity.Internal.InternalContext.<>c__DisplayClass8.<PerformDatabaseInitialization>b__6()
   at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)
   at System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()
   at System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c)
   at System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()
   at System.Data.Entity.Internal.InternalContext.Initialize()
   at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework entity-framework-5

32
推荐指数
5
解决办法
5万
查看次数

模式独立的实体框架代码第一次迁移

我很难使用针对Oracle数据库的Entity Framework迁移,因为模式名称包含在迁移代码中,而对于Oracle,模式名称也是用户名.我的目标是实现与模式无关的Code First Migrations(能够为测试和生产环境提供一组迁移).

我已经尝试过这种方法(使用Entity Framework 6.1.3):

1)我在Web.config中有模式名称:

<add key="SchemaName" value="IPR_TEST" />
Run Code Online (Sandbox Code Playgroud)

2)我的DbContext将模式名称作为构造函数参数:

public EdistributionDbContext(string schemaName) 
    : base("EdistributionConnection")
{
    _schemaName = schemaName;
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.HasDefaultSchema(_schemaName);
}
Run Code Online (Sandbox Code Playgroud)

3)我必须为Entity Framework Migrations实现IDbContextFactory才能创建没有无参数构造函数的DbContext:

public class MigrationsContextFactory : IDbContextFactory<EdistributionDbContext>
{
    public EdistributionDbContext Create()
    {
        return new EdistributionDbContext(GetSchemaName());
    }
}
Run Code Online (Sandbox Code Playgroud)

4)我还将迁移历史表配置为正确的模式:

public class EdistributionDbConfiguration : DbConfiguration
{
    public EdistributionDbConfiguration()
    {
        SetDefaultHistoryContext((connection, defaultSchema) 
            => new HistoryContext(connection, GetSchemaName()));
    }
}
Run Code Online (Sandbox Code Playgroud)

5)我修改了为迁移生成的代码,以替换硬编码的模式名称.例如.我替换CreateTable("IPR_TEST.Users")CreateTable($"{_schema}.Users").(_schema字段根据Web.config中的值设置).

6)我使用MigrateDatabaseToLatestVersion<EdistributionDbContext, MigrationsConfiguration>()数据库初始化程序.

完成所有这些设置后,当我切换到不同的模式时(例如,通过web.config转换),我仍然会遇到问题 - …

c# oracle entity-framework ef-migrations

14
推荐指数
1
解决办法
3490
查看次数

Add-Migration:找不到与参数名称“Context”匹配的参数

   Add-Migration : A parameter cannot be found that matches parameter name 'Context'.
At line:1 char:15
+ Add-Migration -Context ManagementSystemContext
+               ~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Add-Migration], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Add-Migration
Run Code Online (Sandbox Code Playgroud)

我正在尝试将迁移添加到应用程序,但尽管使用此命令,我还是收到了此错误:

PM> Add-Migration -Context ManagementSystemContext
Run Code Online (Sandbox Code Playgroud)

我卸载了 EntityFrameWork.tools 然后重新安装它并重新启动 Visual Studio,但仍然出现相同的错误

c# asp.net asp.net-mvc asp.net-core

6
推荐指数
2
解决办法
1万
查看次数

更新多个数据库 MVC 5

我有两个使用 Visual Studio 2013 的上下文。一个用于 IdentityModel,另一个用于我为主数据库创建的上下文。我遇到的问题是,每当我在包管理器控制台中运行更新数据库时,它都会在两者中创建 ApplicationDBContext DB。我的主数据库永远不会被创建,因为它似乎将它视为 ApplicationDBContext。我尝试了 Enable-Migrations -ContextTypeName DI_MVC.Models.DIDBContext 并且它没有为 DIDBContext 类创建主数据库表。我能够在 Visual Studio 2012 中做到这一点,而没有创建数据库的问题。不过那是没有 ApplicationDBContext 的。对我做错了什么的任何帮助将不胜感激。

下面是我的 2 个代码文件。我创建的普通 IdentityModel 和我的 DIDBContext 类。我还将显示 web.config 文件以及数据库连接。在 App_Data 文件夹中创建了 2 个 .mdf 文件,但两个数据库都包含成员资格表。

using System;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration.Conventions;

namespace DI_MVC.Models
{
    public class DIDBContext : DbContext
    {
        public DIDBContext()
            : base("DIDBContext")
        {

        }

        public DbSet<DI_ConnectionStrings_CSI> CSIs { get; set; }
        public DbSet<DI_DropDownValues_DDV> DDVs { get; set; }
        public DbSet<DI_Types_DIT> DITs { get; set; } …
Run Code Online (Sandbox Code Playgroud)

database asp.net-mvc visual-studio-2013 asp.net-mvc-5

5
推荐指数
1
解决办法
1868
查看次数

实体框架代码优先迁移两个不同的数据库

我对这里的情况很困惑。我需要连接到两个单独的数据库,一个是SQL Server数据库,另一个是MySQL数据库。

我在web.config文件中有连接字符串。我能够连接到服务器并访问数据。

但是,我需要在两个服务器上同时运行实体迁移。或一一列举,我认为这是不可能的。

这是我的数据库上下文:

// Database 1
public class DatabaseContext : DbContext
{
    public DatabaseContext() : base("name=OldDBContext"){ }

    protected override void OnModelCreating(DbModelBuilder modelBuilder) { }

    public static DatabaseContext Create()
    {
        return new DatabaseContext();
    }

    public DbSet<User> UserModel { get; set; }
}

// Database 2
public class NewDatabaseContext : DbContext
{
    public NewDatabaseContext() : base("name=NewDBContext") { }

    protected override void OnModelCreating(DbModelBuilder modelBuilder) { }

    public static NewDatabaseContext Create()
    {
        return new NewDatabaseContext();
    }

    public DbSet<UserData> UserDataModel { …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-code-first ef-migrations entity-framework-6

5
推荐指数
1
解决办法
1560
查看次数