每个开发人员的噩梦都是陷入不再反映数据模型的遗留数据库模式.然而,由于所有关于为可维护性重构代码的讨论,我都没有听说过重构过时的数据库模式.
有关如何在不破坏依赖旧代码的所有代码的情况下过渡到更好的架构的一些提示?我将提出一个具体的问题,我必须说明我的观点,但随意提供其他已证明有用的技术建议 - 这些技术也可能派上用场.
我的例子:
我的公司收到并运送产品.现在产品收据和产品装运有一些非常不同的数据,因此原始数据库设计者为收据和装运创建了一个单独的表.
在我使用这个系统的一年中,我已经意识到当前的架构并没有侥幸.毕竟,收据和货件基本上都是一个交易,它们各自涉及改变产品的数量,但只有+/-符号不同.实际上,我们经常需要找到产品在一段时间内发生变化的总量,这个问题对于这种设计来说是完全难以解决的.
显然,适当的设计是拥有一个Transactions表,其中Id是ReceiptInfo或ShipmentInfo表的外键.不幸的是,错误的模式已经在生产中使用了几年,并且有数百个存储过程,并且有数千行代码从中写出来.那么如何才能将模式转换为正常工作?
使用实体框架迁移时,DbMigration基类具有一个Sql方法,该方法接受匿名对象中的参数
我不能为我的生活弄清楚如何使用它.
Sql(@"
UPDATE dbo.SlideSets
SET Name = @Name,
", false, new {
Name = "Foo"
}
);
Run Code Online (Sandbox Code Playgroud)
导致错误
System.Data.SqlClient.SqlException (0x80131904): Must declare the scalar variable "@Name"
Run Code Online (Sandbox Code Playgroud)
这个陈述的正确语法是什么?
顺便说一句,这是Visual Studio 2003中的Crystal Reports 9
关于水晶报告公式语法的简单问题:如何使用if then子句构建公式的结果?
具体来说,我想要这样的事情:
dim val as string
val = {table.level}
if {table.uom_id} = 5 then
val = val & ' feet'
else
val = val $ ' meters'
end if
Run Code Online (Sandbox Code Playgroud)
和val应该是公式的结果.
只要我们在这里,有没有写这些的捷径?这些是非常冗长的,三元运算符将非常受欢迎.
请原谅newbiew的总问题,但为什么@game_score总是为零呢?
#bowling.rb
class Bowling
@game_score = 0
def hit(pins)
@game_score = @game_score + pins
end
def score
@game_score
end
end
Run Code Online (Sandbox Code Playgroud) 我正在我的新Windows 7机器上设置git,而且当我要让github确认我的ssh密钥时,我遇到了障碍.我正在做一些与标准脚本有点不同的事情,因为我宁愿不使用cygwin而更喜欢使用我的powershell提示符.以下是我的所作所为:
我现在尝试克隆git@github.com:togakangaroo/ps-profile.git拒绝我的身份验证:
权限被拒绝(publickey).致命:远程端意外挂断
过去的经验表明,这意味着git无法识别我的钥匙.我错过了哪些步骤?
我有一种感觉,我需要以某种方式配置git,以便它知道我的ssh键在哪里(虽然它看起来应该自动查看)但我不知道该怎么做.
另一个可能的线索是,当我尝试运行git config --global user.name"George Mauer"时出现错误
fatal: $HOME not set
Run Code Online (Sandbox Code Playgroud)
但我设置了一个HOME环境用户变量,其值为%HOMEDRIVE %% HOMEPATH%
我刚刚安装了ubuntu,并希望用bitbucket/github设置其rsa密钥.当我使用ssh-keygen时,密钥会按原样生成
ssh-rsa AA...yBEz3pLL georgemauer@ubuntu
Run Code Online (Sandbox Code Playgroud)
这是完全可用的,除了用户名部分.在我之前生成的每个rsa密钥中,用户名部分读取了我的电子邮件地址:
ssh-rsa AA...yBEz3pLL gmylastname@gmail.com
Run Code Online (Sandbox Code Playgroud)
不,这不是一个主要的障碍,但如果我没有做到这一点,它会让我发疯.如何使用我选择的电子邮件用户名生成rsa密钥?
我需要能够在我的C#应用程序中简单地指定html中的元素.我只是将Linq用于Sql,但这需要可配置/可序列化为字符串.我当然可以使用XPath,但在这一点上像Sizzle这样的东西对大多数人来说更加自然.
任何人都知道.Net中是否存在sizzle选择器实现?
我对ReactJs中的一些概念很感兴趣,并且想要玩它.我正在尝试开始一个项目来玩它,但我一直在寻找,我似乎无法在凉亭上找到它.但是再次bower搜索有点糟糕......
它在那里,我只是没有看到它?如果它有什么东西使它不适合凉亭模型?我希望这两个项目都很受欢迎,他们可以一起工作.
我有一个Web应用程序,它应该被组成一系列插件到核心基础结构中.插件是一个已编译的CLR dll +一些内容文件,它们将放在某个位置.我正在使用Autofac扫描和注册程序集中的类型,以及一些奇特的路由来从那里为控制器和资产提供服务.但是,由于每个插件程序集都可以包含一个DbContext(按照惯例,每个都将使用自己的数据库),我无法弄清楚该做什么.
现在我已经找到了很多关于如何使用多个上下文的东西,但这一切都需要知道这些在开发时会是什么.我的应用程序不知道在运行时之前将使用哪些上下文.
我正在寻找理想的是想要做某些事情
ApplyMigrations<MyDbContext, MyDbConfiguration>();
Run Code Online (Sandbox Code Playgroud)
虽然我也不得不提供一组有序的迁移来应用(如果使用显式迁移).
我目前绊倒的地方是标准
Database.SetInitializer(...)
Run Code Online (Sandbox Code Playgroud)
因为它是一个静态单例,我系统中的每个dbcontext都有自己的初始化程序.
按照标准的ExpressJs hello word示例,我得到一个':::'的主机.
为什么会这样?
你好的例子:
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
Run Code Online (Sandbox Code Playgroud)
我找到了一个在port参数后添加'localhost'的提示.当我只看我的电脑时,它解决了,但它无法通过网络工作.我该怎么办?