问题标签 [code-migration]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dependency-injection - 注入无法控制实例化的类的最佳方法?
我对 Guice 还很陌生,所以希望这不是一个明显的问题......
我正在处理一个使用反射动态实例化我的一个应用程序类(让我们称之为C
)的框架,所以我无法控制它的实例化。C
此外,在框架实例化它之后,我没有简单的方法来访问新创建的。如下C
所示:
我想使用 DIC
获取。Dependency
这Dependency
显然是一个单例,但通常情况并非如此。
我想出了两种可能的解决方案,感觉都不是很整洁,所以我想我会问专家:
静态注入。我很难看到这如何在服务定位器反模式上得到显着改进 - 我最终得到了可以在外部操纵的非最终静态字段......嗯。
该框架支持一个钩子,用于
C
在实例化后初始化自身(initialize()
如上所示的方法)。此方法可以使用 setter 注入自注入新创建的实例。
对于 2,我想这意味着更多的外部可更改性,但至少对于单元测试之类的事情更明确地暴露了依赖关系。问题是:在这种情况下,我如何获得 Guice Injector(不依赖另一个服务定位器)?我也读过(并且倾向于同意)在整个应用程序代码中明确引用 Injector 是可疑的做法。
您的洞察力将不胜感激。
非常感谢,
克里斯蒂安
c# - 逐步将 PowerBuilder/C++ 应用程序移植到 C#/WPF 或 Winforms
我有机会开始将用 C++/Powerbuilder 编写的遗留应用程序移植到 c#。我们在这个 sprint 中有一个特性,它启动一个独立的对话框,我刚刚完成了为我的这个特性的托管实现创建一个 CCW dll 的练习,从 C++ 中调用。我决定将 WPF 用于托管 DLL 中的视图。到目前为止一切顺利,因为我能够与我的托管 DLL 进行交互操作,包括从示例 MFC 应用程序启动 WPF 窗口。
推动这种策略的原因有几个:
- 我有一堆可重用的管理 DLL,这些 DLL 来自最近重新设计了一个 10 年前的旧应用程序。
- 与 C++ 相比,我在 C# 方面相当有经验,我发现自己在不断与语言语法和智能感知作斗争。FWIW,我们公司在投资一些工具方面可以做得更好,尽管它不会真正改变我对 C++ 语法、头文件和不一致......方法的不喜欢。
- 对于至少我们开发的那种应用程序的桌面应用程序,我认为 C# 是要走的路。4.未来有重新编写应用程序的计划,我不想重复自己,因此在这个阶段开始尝试正确地设计东西。
- 我没有很多 C++ 帮助。
但是,我有一些担忧和疑问:
这种零散的方法是要走的路吗?
从性能的角度来看,我应该与 Winforms 而不是 WPF 进行互操作吗?应用程序将托管一个 GIS,因此性能是关键,尽管我们刚刚开发了另一个托管 ThinkGeo 的 MapSuite 的 WPF 应用程序,它的性能非常好。主要区别在于旧版应用程序比其 WPF 表亲更密集 GIS。
随着关于 WPF/Silverlight 命运的最新传闻,我是否应该考虑 WPF?如果 WPF/Silverlight 要死了,桌面应用程序的替代方案是什么?
3.等待我的是什么陷阱?
对此的任何想法和/或建议都会很棒。我将就此与我的经理进行协商,但想先了解您的一些想法和经验。钛酸。
克劳斯
编辑:
抱歉,申请是 10 岁,而不是最初所说的 25 岁。那里有点混。
string - 将 Delphi 3 迁移到 Delphi 2010 的字符串问题
我得到了一个旧项目的源代码并且不得不改变一些小事情,但我遇到了大麻烦,因为只有 delphi 2010 可以做到这一点。
定义了一条记录:
稍后此定义用于从文件中读取:
主要问题是,编译器不接受记录中的“字符串”类型,因为他想要“最终化”。所以我尝试将“string”更改为“string[255]”或“shortstring”。执行此操作的应用程序正在读取文件但内容错误。
我的问题是如何将用于写入文件的旧“字符串”类型转换为 Delphi 2010 中的“新”类型。
我已经尝试了很多,例如“{$H-}”。在记录中仅添加一个字符显示,该文件是正确的,因为文件读取几乎正确,但每个数据集又截断了一个字符 - lengthbyte+255chars 的长度似乎是正确的 fpr 定义但短字符串不匹配。
compatibility - Ruby/Rails - 使用 ruby-mysql 和 mysql2
我正在将一个非常大的 Rails 2.3 应用程序从 ruby 1.8 迁移到 1.9。在此过程中,我遇到了一些数据库编码问题,似乎只能通过从旧ruby-mysql
gem 迁移到mysql2
.
这对于所有ActiveRecord::Base
ORM 之类的查询(@users = User.find(:all, :conditions => {...})
等)都可以正常工作,但是该应用程序还严重依赖于直接查询数据库以解决一些与性能相关的问题。看到这样的东西很常见:
或者
或者
我应该注意,这个查询主要是在为此编写的指定类文件中完成的,所以不是在控制器、模型等中完成 - 但主要是针对app_root/lib/
. 我似乎也找不到我在旧宝石中使用的东西的许多等效功能。一个很好的例子是#autocommit
like 方法(启用批量查询,如多个 INSERT)。
我想通过使用这两个 gem 来平滑过渡 -mysql2
对于所有ActiveRecord
东西,以及ruby-mysql
直接客户端连接到数据库。但是,当我将两者都包含在我的应用程序的 Gemfile 中时,Rails 似乎默认为其中之一。有没有办法将 Gemfile 配置为仅ruby-mysql
在应用加载时包含但不自动需要它?
如何确保两者都存在,并且仅require 'mysql'
在我严格想要使用旧 gem 的文件中使用?我应该采取其他方法吗?一次性转换整个应用程序是一个相当大的风险,我想让我的团队有一些时间来适应和转换旧代码从 Mysql 到 Mysql2。
谢谢。
ef-code-first - 带有代码迁移的双表
我有一个大数据库,它由两部分组成:后台和前端部分。后台部分永远不会因项目而改变,因此他们有自己的业务和数据组件。
数据层有它自己的代码迁移,它自己DbContext
称为BackofficeContext
. 架构是Backoffice
前端具有相同的结构,也有自己的数据层、自己的代码迁移和DbContext
调用的FrontendContext
. 这有不同的架构Frontend
。
在数据库中,我将看到 Backoffice 和 Frontend 相关表的清晰分离,这正是我想要的。
只有一个问题。中的一个表FrontendContext
包含一个字段BackofficeContext
:
用户表在 中BackofficeContext
,UserChoises
表在 中FrontendContext
。
当我为 运行代码迁移时,BackofficeContext
它将为Users
. 当我为它运行代码迁移时,FrontendContext
它会创建UserChoises
表,但也会再次创建Users
表。
我可以从迁移文件中手动删除此表,但每次进行新迁移时它都会返回。
有没有办法让人们FrontendContext
意识到BackofficeContext
?
entity-framework - 实体框架代码迁移 - 卡在初始迁移上
我已通过 Nuget 将 EF 5 添加到我的项目中,并使用“Enable-Migrations”命令启用了迁移。然后我调用了“Add-Migration”来生成用于生成模式的基本代码。
然后,我向我的一个域对象(称为“TestProperty”的字符串属性)添加了一个属性,并向我的 EntityTypeConfiguration 文件添加了一个映射(我们目前忽略了约定)。
再次调用“Add-Migration”会产生错误:
但是调用“Update-Database”会产生 sql 异常,因为表已经存在:
在我的 DbContext 构造函数中,我尝试了不同的更新策略,例如:
我错过了一些明显的东西吗?我在这里尝试了解决方案,但没有奏效:ASP.NET 的自动迁移
谢谢
编辑:更新通过第一步的关键是创建初始迁移,然后从 Up 和 Down 方法中删除生成的代码(http://thedatafarm.com/blog/data-access/using-ef-migrations-与现有数据库/)。
然后我可以更新模型和 EF 映射,然后运行 Add-Migration。这会使用正确的 Up 和 Down 代码生成迁移。
然后问题是尝试应用更新。Update-Database 产生错误“无法更新数据库以匹配当前模型,因为存在待处理的更改并且自动迁移被禁用...自动迁移。将 DbMigrationsConfiguration.AutomaticMigrationsEnabled 设置为 true 以启用自动迁移。您可以使用 Add-Migration命令将挂起的模型更改写入基于代码的迁移”。好的,所以我再次尝试添加迁移,它会生成另一个迁移,其代码与上一个迁移完全相同。
我运行 Update-Database 并再次得到相同的错误。我尝试“Update-Database -TargetMigration 201304080859556_MyMigration -Force”,但这会产生“指定的目标迁移 '201304080859556_MyMigration' 不存在。确保目标迁移指的是现有的迁移 id” - 它确实存在!
非常令人沮丧!
ef-code-first - 代码优先:UserData 和 User 表
我对 Code First 和 Code Migrations 有一些问题。
我有一个 User 类和一个 UserData 类(带有可选信息,例如名字/姓氏),但是当我尝试运行“Add-Migration”或“Update-Database”命令时,出现了几个错误。
我创建了用户类:
和 UserData 类:
使用此设置,我收到错误:
为表“用户”指定了多个标识列。每个表只允许一个标识列。
尝试运行“更新数据库”时(“添加迁移”命令运行良好)。
我已经尝试将public User User { get; set; }
和添加public int UserID { get; set; }
到 UserData.cs,但随后出现“Add-Migration”命令错误:
无法确定类型“UserData”和“User”之间关联的主体端。此关联的主体端必须使用关系流式 API 或数据注释显式配置
知道如何解决这个问题吗?
提前致谢。
entity-framework - 参考 dll 中的 EF 代码迁移来自 nuget
我们有一个情况。我们公司在 .net 上构建了框架,供使用该框架开发的产品使用。现在这个框架首先使用 EF 代码。我们希望通过生成的迁移定义来实现 EF 代码迁移,因为我们的实体位于其中一个框架项目中。所以我已经实现了。但情况是我们将这个框架作为 Nuget 包(内部)分发给其他产品。
现在的情况是,假设ProductA正在使用包含 xyz.dll 的包,该包中启用了迁移。现在“ProductA”的开发人员想先使用那个 xyz.dll 迁移来升级由 Framework EF 代码创建的数据库,但是这个 dll 只是作为引用的 dll 添加的。因此,在像 Update-Database 这样的包管理器控制台中运行命令不起作用,因为项目不在当前解决方案中,并且它在参考 dll 中
我该如何解决这个问题?
c# - 实体框架代码迁移:调用目标已引发异常
我在我的 MVC 项目中使用 Code first Entity Framework 5。今天我对我的领域模型进行了一些更改,并更新了应用程序的其余部分以适应这些新更改。自然,当对域模型进行更改时,您需要更新数据库。我们正在使用代码迁移来做到这一点(即手动迁移)。但是,当我尝试通过包控制台添加新迁移时,出现以下异常:
调用的目标已引发异常。
我尝试将启动项目添加到命令中,但也没有用。我所有的项目都构建了,所以也没有编译器错误。
编辑:此外,无论我做什么,都会发生这种情况:更新数据库或更新数据库与目标迁移。所有人似乎都给了我同样的例外。
这是调用堆栈:
我不确定我应该从哪里开始寻找。
javascript - PHP 相当于 Javascript %
我正在将这些函数http://www.movable-type.co.uk/scripts/latlong.html转换为 PhP,以便它们可以在服务器端运行。
我在 Javascript 中有以下代码行(第 201 行)
到目前为止,在 php 中我得到了
但是我不知道它%
在 Javascript 中代表什么以及它到 PHP 的等效转换是什么。
任何见解将不胜感激。
谢谢