EF Code First MigrateDatabaseToLatestVersion 接受配置中的连接字符串名称

2024-01-17

在尝试在我的项目中实现 EF 迁移时,我陷入了困境。

EF Code First MigrateDatabaseToLatestVersion 接受配置中的连接字符串名称。

在我的例子中,数据库名称在运行时已知(用户从下拉列表中选择它)。 正如 DbContext 在其构造函数中接受 ConnectionString 或 connectionString Name 的方式一样,“MigrateDatabaseToLatestVersion”不接受相同的内容

System.Data.Entity.Database.SetInitializer
(new MigrateDatabaseToLatestVersion<SrcDbContext, SRC.DomainModel.ORMapping.Migrations.Configuration>(connString));

还有其他方法可以实现这一目标吗?


谢谢你们。我确实从codeplex上签出了EF代码,并在了解了他们的源代码后继承了我自己的类。这是我选择的解决方案:-

public class MigrateDbToLatestInitializerConnString<TContext, TMigrationsConfiguration> : IDatabaseInitializer<TContext>
        where TContext : DbContext
        where TMigrationsConfiguration : DbMigrationsConfiguration<TContext>, new()
    {
        private readonly DbMigrationsConfiguration config;

        /// <summary>
        ///     Initializes a new instance of the MigrateDatabaseToLatestVersion class.
        /// </summary>
        public MigrateDbToLatestInitializerConnString()
        {
            config = new TMigrationsConfiguration();
        }

        /// <summary>
        ///     Initializes a new instance of the MigrateDatabaseToLatestVersion class that will
        ///     use a specific connection string from the configuration file to connect to
        ///     the database to perform the migration.
        /// </summary>
        /// <param name="connectionString"> connection string to use for migration. </param>
        public MigrateDbToLatestInitializerConnString(string connectionString)
        {
            config = new TMigrationsConfiguration
                          {
                              TargetDatabase = new DbConnectionInfo(connectionString, "System.Data.SqlClient")
                          };
        }

        public void InitializeDatabase(TContext context)
        {
            if (context == null)
            {
                throw new ArgumentException("Context passed to InitializeDatabase can not be null");
            }

            var migrator = new DbMigrator(config);

            migrator.Update();
        }
    }

 public static class DatabaseHelper
    {
        /// <summary>
        /// This method will create data base for given parameters supplied by caller.
        /// </summary>
        /// <param name="serverName">Name of the server where database has to be created</param>
        /// <param name="databaseName">Name of database</param>
        /// <param name="userName">SQL user name</param>
        /// <param name="password">SQL password</param>
        /// <returns>void</returns>
        public static bool CreateDb(string serverName, string databaseName, string userName, string password)
        {
            bool integratedSecurity = !(!string.IsNullOrEmpty(userName) || !string.IsNullOrEmpty(password));

            var builder = new System.Data.SqlClient.SqlConnectionStringBuilder
                {
                    DataSource = serverName,
                    UserID = userName,
                    Password = password,
                    InitialCatalog = databaseName,
                    IntegratedSecurity = integratedSecurity,
                };


            var db = new SrcDbContext(builder.ConnectionString);

            var dbInitializer = new MigrateDbToLatestInitializerConnString<SrcDbContext, SRC.DomainModel.ORMapping.Migrations.Configuration>(builder.ConnectionString);

            //following uses strategy to "CreateIfNotExist<>"
            dbInitializer.InitializeDatabase(db);

            return true;

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

EF Code First MigrateDatabaseToLatestVersion 接受配置中的连接字符串名称 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么

随机推荐

  • 绕过截断的“ps”

    我正在尝试编写一个脚本 该脚本将根据关键字查找特定进程 提取 PID 然后使用找到的 PID 杀死它 我在 Solaris 中遇到的问题是 由于 ps 结果被截断 基于关键字的搜索将无法工作 因为关键字是被截断的部分 过去 80 个字符 的
  • 如何检查函数是否已从控制台调用?

    我试图跟踪从控制台调用某些函数的次数 我的计划是在每个函数中添加一个简单的函数 例如 trackFunction 可以检查它们是从控制台调用还是作为底层函数调用 尽管这个问题听起来很简单 但由于我在函数编程方面的知识有限 我找不到解决这个问
  • git filter repo - 未找到 Python - 但已安装

    所以我第一次尝试使用 git filter repo 我已经安装了Python 3 9 我尝试运行 git filter repo strip blobs bigger than 100M 每次失败时 git 重击 git filter r
  • psexec 支持输入重定向吗?

    我试图通过 psexec 控制远程 Python 脚本 它从 stdin 读取命令 但我需要重定向 psexec 的输入 因为 psexec 本身将从另一个程序启动 但是 我没有运气让 psexec 接受重定向的输入 它应该起作用吗 我想做
  • lxml:将命名空间添加到输入文件

    我正在解析由外部生成的 xml 文件program http celldesigner org 然后 我想使用我自己的命名空间向该文件添加自定义注释 我的输入如下所示
  • iOS - Xcode 中的文件所有者和第一响应者是什么?

    iOS Xcode 中的文件所有者和第一响应者是什么 文件所有者是一个实例化的 runtime加载笔尖时拥有笔尖内容及其出口 操作的对象 它可以是您喜欢的任何类的实例 查看工具选项板的标识选项卡 文件所有者是应用程序代码和 nib 文件内容
  • 防止 Python 嵌入在我的默认路径 C:\Python38 中查找模块

    我正在使用 Cython embed模式来生成 exe 我正在评估分发嵌入 Cython 编译的代码并使其在任何机器上运行所需的最少文件集 https stackoverflow com questions 62390978 minimal
  • 如何使用“puts”添加额外的换行符而不将换行符粘贴到字符串中?

    If I say puts Hello 并决定添加一个额外的换行符 我需要这样做 puts Hello n 在字符串中包含这个字符是很难看的 有什么办法可以做到这一点而不污染我的字符串吗 只需再拨打一次电话即可puts puts Hello
  • 测量 Java 程序内存使用情况的最佳方法?

    我目前正在使用VisualVM 但我遇到的问题是我无法保存它生成的图表 我需要报告一些有关其内存使用情况和运行时间的数据 尽管运行时间很容易获得System nanoTime 我也尝试过NetBeans 分析器但这不是我想要的 因为我不是在
  • 执行 JFrame.pack() 后如何保存 JScrollPane 位置?

    我有以下代码 JFrame frame new JFrame JScrollPane scrollPane new JScrollPane new panel with stuff in it frame getContentPane ad
  • 如何打开多个 WebSocket 流

    我正在尝试从 Binance WebSocket API 传输数据 我让它一次只处理一个交易品种 if WebSocket in window open websocket var symbols getSymbol console log
  • 为什么 HTTP 中 GET 方法比 POST 快?

    我是网络编程新手 只是想了解将数据从一个页面发送到另一个页面的 GET 和 POST 方法 据说GET方法比POST更快 但我不知道为什么 我发现的原因之一是 GET 只能包含 255 个字符 难道还有其他原因吗 请有人给我解释一下 与速度
  • 我的计算机上的 Ubuntu 14.04 上的 CUDA 安装在哪里?

    我正在尝试在我的 ubuntu 14 04 中安装 CUDA 7 5 我遵循了本指南中的所有内容 通过包安装 http developer download nvidia com compute cuda 7 5 Prod docs sid
  • 如何在 HTML 电子邮件模板中嵌入图像?

    我创建了一个电子邮件模板 using HTML和从头开始的内联样式 现在我需要添加一些图像 此时无法使用 url 因为它没有托管 我尝试使用 base64 编码 它在 Apple 邮件客户端中有效 但图像未在 Gmail 中呈现 有没有办法
  • FullAjaxExceptionHandler 在无效会话后不会重定向到错误页面

    我在使用 Omnifaces FullAjaxExceptionHandler 时遇到问题 http showcase omnifaces org exceptionhandlers FullAjaxExceptionHandler htt
  • 安装 ibapi 包

    您好 我正在尝试在 python 中安装 ibapi 但是该软件包似乎不可用 因为每次我尝试安装它时都会出现错误 是否有其他方法可以安装该软件包 对你的帮助表示感谢 我已经留下了我使用的代码 尝试安装该软件包 pip install iba
  • Python:在 difflib 中传递 SequenceMatcher“autojunk=False”标志会产生错误

    I am trying https stackoverflow com questions 20267564 python find maximum length of all n word length substrings shared
  • 寻求反转(反转?镜像?翻转)DAG 的算法

    我正在寻找一种算法来 反转 反转 从里到外 有向无环图 A I can t ascii art the arrows so just pretend the slashes are all pointing B C down south e
  • 阻止 header 在调用 reloadData 后被更新?

    我有一个带有自定义标头的 UITableView 可以维护某些状态 当我调用 reloadData 更改 更新 UITableView 中的数据时 标题也会重新加载 有什么方法可以防止这种行为以维护表头中的状态 不要将这些状态放在标题中 您
  • EF Code First MigrateDatabaseToLatestVersion 接受配置中的连接字符串名称

    在尝试在我的项目中实现 EF 迁移时 我陷入了困境 EF Code First MigrateDatabaseToLatestVersion 接受配置中的连接字符串名称 在我的例子中 数据库名称在运行时已知 用户从下拉列表中选择它 正如 D