提供者 Oracle 与实体框架不支持删除数据库

2024-03-20

我正在使用模型优先方法和 Oracle 数据库。

更新2:现已修复

关于包括seed数据,我收到此错误“提供商不支持删除数据库”

UPDATE1如果我更改种子数据类型
public class MySeedData : DropCreateDatabaseAlways<ToolContext> to
public class MySeedData : DropCreateDatabaseIfModelChanges<ToolContext>
该错误被另一个错误替换:

Exception Model compatibility cannot be checked because the DbContext instance was not created using Code First patterns. DbContext instances created from an ObjectContext or using an EDMX file cannot be checked for compatibility

种子数据

 public class MySeedData : DropCreateDatabaseAlways<ToolContext>
    {
        protected override void Seed(ToolContext context)
        {
            base.Seed(context);

            var category = new List<CategoryValue>
            {
                new CategoryValue{Id=1, Name = "Associate"},
                new CategoryValue{Id =2, Name = "Professional"},
                new CategoryValue{Id=3, Name = "Master"},
                new CategoryValue{Id = 4, Name = "Product"},
                new CategoryValue{Id = 5, Name = "Portfolio"}
            };

            category.ForEach(cert => context.CategoryValues.Add(cert));
            context.SaveChanges();
        }
    }

网页配置

 <connectionStrings>
    <add name="LMSPriorToolContext" 
           connectionString="metadata=res://*/Models.LMSPriorToolModel.csdl|res://*/Models.LMSPriorToolModel.ssdl|res://*/Models.LMSPriorToolModel.msl;
provider=Oracle.DataAccess.Client;
provider connection string=&quot;DATA SOURCE=DEV;PASSWORD=1234;PERSIST SECURITY INFO=True;USER ID=abc&quot;" 
providerName="System.Data.EntityClient" />
  </connectionStrings>

应用程序_启动()

Database.SetInitializer<ToolContext>(new SeedData());

Main.cs:此文件中引发异常我知道当您第一次尝试访问数据库时,会执行种子数据方法或脚本。

 using (var dbContext = new ToolContext())
        {
            var items = dbContext.CategoryValues;

            foreach(CategoryValue category in **items**)  // **Getting error here**
            {
                Console.WriteLine(category.Name);
            }
        }

参考似乎我在这里遗漏了一些东西,因为没有与 Oracle 或 ODAC 相关的内容

堆栈跟踪

 at System.Data.Common.DbProviderServices.DbDeleteDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection)
   at System.Data.Objects.ObjectContext.DeleteDatabase()
   at System.Data.Entity.Internal.DatabaseOperations.DeleteIfExists(ObjectContext objectContext)
   at System.Data.Entity.Database.Delete()
   at System.Data.Entity.DropCreateDatabaseAlways`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)

请建议我在这里缺少什么。


使用播种数据的方式DropCreateDatabaseAlways or DropCreateDatabaseIfModelChanges模型优先方法不支持。

将种子数据类更改为:

public class ToolSeedData : IDatabaseInitializer<ToolContext>
{
    public void InitializeDatabase(ToolContext context)
    {
        var category = new List<CategoryValue>
        {
            new CategoryValue{Id=1, Name = "Associate"},
            new CategoryValue{Id =2, Name = "Professional"},
            new CategoryValue{Id=3, Name = "Master"},
            new CategoryValue{Id = 4, Name = "Product"},
            new CategoryValue{Id = 5, Name = "Portfolio"}
        };

        category.ForEach(cert => context.CategoryValues.Add(cert));

        context.SaveChanges();
    }

如果不使用可能会出现错误:

  1. 提供商不支持删除数据库
  2. 无法检查异常模型兼容性,因为 DbContext 实例不是使用 Code First 模式创建的。 从 ObjectContext 或使用 EDMX 创建的 DbContext 实例 无法检查文件的兼容性

微软链接种子数据库不起作用 http://social.msdn.microsoft.com/Forums/en-US/558163f0-d4be-43a7-aac3-2df339578e28/entity-framework-41-aspnet-mvc3-seeding-database-does-not-work

希望这对其他人有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提供者 Oracle 与实体框架不支持删除数据库 的相关文章

  • 什么会导致 Oracle ROWID 更改?

    AFAIK Oracle 中的 ROWID 表示相应数据文件中记录的物理位置 在什么情况下记录的ROWID可能会改变 我所知道的一个是分区表上的更新 它将记录 移动 到另一个分区 还有其他情况吗 我们的大多数数据库都是 Oracle 10
  • MVC5 实体框架的问题

    我在我的 Web 应用程序中使用 Visual Studio 2013 中的 ASP NET MVC5 Entity Framework 6 我正在尝试我的模型工作 但由于某种原因而出现错误 我已经尝试过 Fluent API 和它自己的模
  • 在sql plus脚本中运行循环

    我正在 sql plus 中运行脚本 我的脚本中有一个 for 循环 BEGIN FOR count IN 1 100 LOOP INSERT INTO CompanyShare VALUES count 1 250 END LOOP EN
  • Oracle Blob 在 PHP 页面中作为 img src

    我有一个网站当前使用文件服务器上的图像 这些图像显示在页面上 用户可以根据需要拖放每个图像 这是使用 jQuery 完成的 图像包含在列表中 每张图片都非常标准 img src network path image png height 8
  • 如何使用 LINQ to Entities 调用带返回值的 Oracle 函数?

    我正在开发一个从 Oracle 11g 数据库访问数据的应用程序 我使用的是 EF4 并且使用 LINQ 访问数据 我遇到过一个场景 我需要调用存储在包中的函数 这个函数也有一个返回值 我已将此函数添加到实体数据模型中 但无法对其执行 添加
  • Oracle 删除约束级联等效于 Sql Server

    在Oracle中 删除约束PK SAI我使用语法 ALTER TABLE SAISIE DROP CONSTRAINT PK SAI CASCADE SQL Server 中与此等效的是什么 您正在考虑与实际 DELETE 语句相关的 FO
  • OWIN 可以替代 ASP.NET MVC 应用程序中的 DI 吗?

    大约一年前 在 Visual Studio 中创建时自动生成的 MVC 项目不包含任何有关 OWIN 的内容 作为再次申请并试图了解这些变化的人 我想知道 OWIN 是否可以替代我的 DI 据我了解 Startup Auth cs 中的以下
  • 播种多对多数据

    您好 我正在尝试为我的项目创建一些种子 但我在将多对多关系数据播种到数据库时遇到问题 My database看起来像这样 in 教师技能 教师ID and Skill ID当然是他们的表的外键 My seeder看起来像这样 protect
  • 实体框架:从模型生成数据库从模型存储中删除存储过程

    我正在使用带有 EF 4 模型的存储过程 为了实现这一目标 我将执行以下步骤 我通过从数据库更新并选择它来将存储过程添加到我的模型存储中 添加了函数导入以指向存储过程 存储过程返回连接多个表等的查询结果 因此在 返回集合 我指定的区域复合型
  • 如何更新 pl/sql 中嵌套表的列? [复制]

    这个问题在这里已经有答案了 我正在尝试在表中创建一个可以存储多个值的列 如下所示 我有一个学生id std和一个名为marks可以采用几个值 例如2 3 4 我想更新此列表以添加另一个标记2 3 4 5但我不知道怎么做 我如何更新专栏mar
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • Oracle即时客户端和Oracle客户端之间的区别

    Oracle即时客户端和Oracle客户端有什么区别 你能给我解释一下吗 谢谢 Oracle 客户端附带一个安装程序和许多可执行文件 例如 sqlplus tnsping 很完整而且很大 Oracle Instant 客户端是一个基本的轻量
  • 无法使用 Ninject 将依赖项注入到从 Angular 服务调用的 ASP.NET Web API 控制器中

    我将 Ninject 与 ASP NET MVC 4 一起使用 我正在使用存储库 并希望进行构造函数注入以将存储库传递给其中一个控制器 这是实现 StatTracker 接口的上下文对象 EntityFramework public cla
  • 插入具有多个值的外键

    我想知道 是否有可能创建一个表 其中我有一个接受外键但同一行可能有多个值的表 例如 Employee id name skillid Skill Skillid skillname 这里 Employee 的一个例子可以是 Employee
  • PLSql 返回值

    我再次使用一些 PLSql 我想知道 是否有任何方法可以像选择一样使用以下函数 而不必将其转换为函数或过程 这样我就可以从包含它的脚本中看到代码 代码如下 DECLARE outpt VARCHAR2 1000 flow rI VARCHA
  • Oracle Text:如何清理用户输入

    如果有人有使用 Oracle 文本的经验 CTXSYS CONTEXT 我想知道当用户想要搜索可能包含撇号的名称时如何处理用户输入 在某些情况下 转义 似乎有效 但对于单词末尾的 s 则不起作用 s 在停用词列表中 因此似乎已被删除 目前
  • oracle ExecuteNonQuery 在 ASP.Net 上冻结

    我正在尝试使用 ASP C 和 CLR 4 5 中的 Oracle 连接来运行非查询 这是我的代码 string connectionString ConfigurationManager ConnectionStrings OracleC
  • 从类型获取 DbSet

    我正在尝试为 MVC 6 应用程序制作通用表查看器 编辑器 我目前使用 Context GetEntityTypes 返回给我一份表格列表 现在我需要获取特定类型的数据 我当前的实现是 On my context public IQuery
  • 从客户端访问 DomainService 中的自定义对象

    我正在使用域服务从 Silverlight 客户端的数据库中获取数据 在DomainService1 cs中 我添加了以下内容 EnableClientAccess public class Product public int produ
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体

随机推荐