单击此处以查看在使用代码优先方法时如何执行此操作.原始数据库下面的第一个方法问答.
我正在使用Entity Designer创建数据库第一个模型.现在我想在ProductId和ProductId之间创建一个外键关系(见下文).我查看了"添加新关联"但我无法连接这两个项目.更有经验的人可以告诉我如何实现这一目标吗?

因为我想对我的代码进行单元测试,所以我在MVC4应用程序中实现了存储库模式.我设法创建了一个Context Interface,一个假的Context,并System.Data.Entity.DbSet通过遵循这个代码使用a的假实现.
不幸的是,就像我面前的两张海报(这里和这里),我没有设法嘲笑DbContext.Entry method.我使用此方法更新代码中的数据库条目,如下所示:
DbContext.Entry(order).State = EntityState.Modified;
Run Code Online (Sandbox Code Playgroud)
我还没有找到解决这个问题的方法,只有那些人说:
"这个代码单元测试的重点是什么?你伪造了Find方法,然后伪造DbEntityEntry并且没有真正的逻辑可以测试."
或者
在继续之前,请阅读此链接和所有相关问题.(...)如果要测试存储库,请创建与真实数据库对话的集成测试.
这一切都很好,但仍然没有回答这个问题.我阅读了批评,我仍然想要这个Entry方法,所以我将能够使用假上下文并在我的单元测试中使用模拟对象.当然我也会使用集成测试,但它们并不像某些快速单元测试那么快.
我尝试一些实现时收到的错误是 Error 2 'Project.Models.Order' does not contain a definition for 'State' and no extension method 'State' accepting a first argument of type '[whatever return type I use]' could be found (are you missing a using directive or an assembly reference?)
我希望有人可以帮我制作一个假的DbContext.Entry方法.
c# unit-testing entity-framework repository-pattern asp.net-mvc-4
当我在Capistrano部署文件夹中的服务器上运行bundle exec rails console production或rails console production通过SSH时,Current我得到:
Usage:
rails new APP_PATH [options]
Options:
(...)
Run Code Online (Sandbox Code Playgroud)
解释开始一个新的应用程序.在当地它的工作原理.为什么我不能远程启动控制台?
我想测试依赖于数据库并使用数据库的MVC4应用程序中的方法.我不想使用模拟方法/对象,因为查询可能很复杂,为此创建测试对象太费劲了.
我发现集成测试的想法将测试的数据库操作逻辑包装在一个TransactionScope对象中,该对象在完成后回滚更改.
不幸的是,这不是从一开始就是一个空的数据库开始,它也使得主键计数(即,当数据库中已经存在一些具有主键1和2的项时,然后在我运行测试之后,它依赖于4),我不想要这个.
这是一个"集成测试"我想出来测试产品是否实际添加(例如,我想创建更难的测试,一旦我拥有正确的基础设施就检查方法).
[TestMethod]
public void ProductTest()
{
// Arrange
using (new TransactionScope())
{
myContext db = new myContext();
Product testProduct = new Product
{
ProductId = 999999,
CategoryId = 3,
ShopId = 2,
Price = 1.00M,
Name = "Test Product",
Visible = true
};
// Act
db.Products.Add(testProduct);
db.SaveChanges();
// Assert
Assert.AreEqual(1, db.Products.ToList().Count());
// Fails since there are already items in database
}
}
Run Code Online (Sandbox Code Playgroud)
这提出了很多问题,这里有一个选择:我如何从空数据库开始?我应该使用自己的上下文和连接字符串将另一个数据库附加到项目吗?最重要的是,如何在不破坏旧数据的情况下在实际数据库上正确测试方法?
我整天忙着试图弄清楚如何对我的数据库逻辑进行单元/集成测试.我希望这里有经验丰富的开发人员能提供一些帮助
/编辑影响/更改我的数据库的NDbUnit测试...
public class IntegrationTests
{
[TestMethod]
public void Test()
{
string …Run Code Online (Sandbox Code Playgroud) 我一直在阅读Donald Knuth第1卷的计算机程序设计艺术.现在我完成了第一部分,所有的数学都被解释了,这是非常愉快的.不幸的是,在p.他开始解释这种MIX基于真实机器语言的虚构机器语言,随后他将解释所有算法,而Knuth先生完全失去了我.
我希望这里有人"说话" MIX,可以帮助我理解它.具体来说,他失去了我开始解释不同操作和展示例子的地方(第125页).
Knuth使用以下形式的"指令格式":

他还解释了不同字节的含义:

因此,右字节是要执行的操作(例如,LDA"加载寄存器A").F字节是操作代码的修改,具有8L + R的字段规范(L:R)(例如,C = 8且F = 11产生"加载具有(1:3)字段的寄存器).然后+/- AA是地址,我是修改地址的索引规范.
这对我来说有点道理.但是Knuth带来了一些例子.第一个我理解除了几个位,但我无法绕过第二个例子的最后三个,而在下面的例子3中的更困难的操作中没有任何东西.
这是第一个例子:

LDA 2000只加载完整的单词,我们完全在寄存器A中看到它rA.第二个LDA 2000(1:5)加载从第二个位(索引1)到结尾(索引5)的所有内容,这就是加载除加号之外的所有内容的原因.第三个LDA 2000(3:5)只加载从第三个字节到最后一个字节的所有内容.另外LDA 2000(0:3)(第四个例子)有点理解.应复制-803并取 - 并将80和3放在最后.
到目前为止这么好,在number5中,如果我们遵循相同的逻辑,LDA2000(4:4)它只传输第四个字节.它确实对最后一个位置做了什么.但是,LDA 2000(1:1)应该只复制第一个字节(符号).这很奇怪.为什么第一个值是+而不是 - (我只想要 - 被复制).为什么其他值都是0而最后一个是问号?
然后他给出了第二个例子的操作STA(商店A):

同样,STA 2000,STA 2000(1:5)和STA 2000(5:5)有意义的逻辑相同.但是,Knuth确实如此STA 2000(2:2).你希望在寄存器A中复制第二个字节等于7.但不知怎的,我们最终会得到- 1 0 3 4 5.我一直在看这些几个小时,并且不知道这是怎么回事,或者跟随这一个(STA 2000(2:3)和STA 2000(0:1))的两个例子可以导致显示的位置的内容.
我希望这里有人可以对这三个人发光.
此外,我也有在那里,他解释了操作的页面大麻烦ADD, …
使用web-tiki的响应方形网格布局我已经制作了一些带有背景图像和文本的响应方块,如下所示:
HTML:
<div class="square bg imgautumn1">
<div class="content">
<div class="table">
<div class="table-cell months">
VISIBLE TEXT
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.square {
float: left;
position: relative;
margin: 0.25%;
width: 50%;
padding-bottom : 50%; /* = width for a 1:1 aspect ratio */
background-color: #1E1E1E;
overflow: hidden;
}
.content {
position: absolute;
height: 90%; /* = 100% - 2*5% padding */
width: 90%; /* = 100% - 2*5% padding */
padding: 5%;
}
.table {
display: table;
width: 100%; …Run Code Online (Sandbox Code Playgroud) 我有一个表格,每行都有一个复选框,下面有一个按钮.如果选中至少一个复选框,我想禁用该按钮.
<tbody>
<tr>
<td>
<input class="myCheckBox" type="checkbox"></input>
</td>
</tr>
</tbody>
<button type=submit id="confirmButton"> BUTTON </button>
Run Code Online (Sandbox Code Playgroud)
我想出来的jQuery实现如下:
$('tbody').click(function () {
$('tbody tr').each(function () {
if ($(this).find('.myCheckBox').prop('checked')) {
doEnableButton = true;
}
if (!doEnableButton) {
$('#confirmButton').prop('disabled', 'disabled')
}
else {
$('#confirmButton').removeAttr("disabled");
}
});
});
Run Code Online (Sandbox Code Playgroud)
当然,这不起作用.否则我不会在这里.它所做的只是响应最低的复选框(例如,当选中/取消选中最低按钮时,启用/禁用按钮).
我在这里制作了一个JSFIddle ,虽然它没有显示与本地相同的行为.
有没有人知道我如何能够完成它响应所有复选框并禁用按钮如果它们全部被禁用?
在解释如何将数字转换为列表的答案中,number->list过程定义如下:
(define (number->list n)
(let loop ((n n)
(acc '()))
(if (< n 10)
(cons n acc)
(loop (quotient n 10)
(cons (remainder n 10) acc)))))
Run Code Online (Sandbox Code Playgroud)
这里使用" 命名let ".我不明白这个命名let是如何起作用的.
我看到定义了一个循环,其中变量n等于n,并且变量acc等于空列表.然后,如果n小于10 n则与acc一致.否则,"循环"应用n等于n/10和acc等于n/ 10 的剩余部分和先前累积的东西的缺点,然后调用自身.
我不明白为什么loop被称为循环(什么是循环?),它如何自动执行和调用自身,以及它将如何实际添加每个数字乘以其适当的乘数以在基数10中形成数字.
我希望有人可以对程序和上述问题发表意见,以便我能更好地理解它.谢谢.
我将我的Spree应用程序部署到服务器.在本地我可以作为管理员登录并更改内容,但在服务器上此密码和帐户不起作用.当我去/ admin时,我收到消息授权失败.
我确实已经运行了bundle exec rake spree_auth:admin:create和bundle exec rake db:migrate但是这不起作用.此外,我还可以使用我从托管公司获得的电子邮件地址和密码登录,但我无法访问管理页面.
有谁知道我是如何创建管理员用户的?
我正在尝试通过OAuth2连接到Google.我使用的代码在另一个应用程序中运行,所以我很确定问题出在Google的配置中.
我在Google控制台中注册了一个客户端ID和密钥,我将其添加到授权配置中:
var client = new GoogleOAuth2Client("[client id].apps.googleusercontent.com", "[secret key]");
var extraData = new Dictionary<string, object>();
OAuthWebSecurity.RegisterClient(client, "Google", extraData);
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我按下按钮进行连接时,我收到以下错误:
- 那是一个错误.
错误:invalid_request
redirect_uri的参数值无效:缺少权限:
file:/// Account/ExternalLoginCallback%3FReturnUrl =/
Request Details
scope = https://www.googleapis.com/auth/userinfo.profile
https://www.googleapis .com/auth/userinfo.email
response_type = code
redirect_uri = file:/// Account/ExternalLoginCallback%3FReturnUrl = /
state = provider = google&sid = [numbers] client_id = [client id] .apps.googleuserconte
我已经尝试将/etc/hosts文件中的localhost参数更改为其他基本URL,并且我已添加这些位置以在Google控制台中重定向URI,如下所示:
http://localhost:8080/Account/ExternalLoginCallback%3FReturnUrl=/
http://localhost.example.com:8080/Account/ExternalLoginCallback
http://localhost.example.com:8080/Account/ExternalLoginCallback%3FReturnUrl=/
Run Code Online (Sandbox Code Playgroud)
错误仍然存在.我不知道问题是什么,我希望有人可以给我一些指导.谢谢
c# ×2
unit-testing ×2
assembly ×1
background ×1
checkbox ×1
css ×1
elixir-mix ×1
google-oauth ×1
html ×1
image ×1
javascript ×1
jquery ×1
knuth ×1
mono ×1
oauth-2.0 ×1
opacity ×1
postgresql ×1
ruby ×1
scheme ×1
spree ×1
ssh ×1