我有一个使用Entity Framework的项目.在调用SaveChangesmy时DbContext,我得到以下异常:
System.Data.Entity.Validation.DbEntityValidationException:一个或多个实体的验证失败.有关详细信息,请参阅"EntityValidationErrors"属性.
这一切都很好,但每次发生此异常时我都不想附加调试器.此外,在生产环境中,我无法轻松附加调试器,因此我不得不竭尽全力重现这些错误.
我怎样才能看到隐藏在其中的细节DbEntityValidationException?
在使用RESTful API的现代Web项目中,我们经常会看到AJAX调用,就像下面的JavaScript文件一样.
$.ajax({
type: "POST",
url: myapp.baseUrl + 'Api/Note',
data: ko.mapping.toJSON(note),
contentType: 'application/json',
}).done(function (response) {
// do something
}).fail(function (jqxhr) {
// do something else
});
Run Code Online (Sandbox Code Playgroud)
我喜欢WebAPI,我喜欢Knockout,我喜欢将两者结合在一起.然而,这些AJAX调用非常冗长,包含了我并不感兴趣的各种细节.相反,我创建了一个围绕这些方法的包装器:
myapp.api.saveNote(note)
Run Code Online (Sandbox Code Playgroud)
但是,这仍然需要我实际编写一个包含AJAX调用的包装器.我想知道你是否真的可以生成这些包装器.本质上,我将为我的WebAPI生成一个基于JS的客户端,类似于Java和.NET如何基于WSDL生成客户端.
我已经看过amplifyJS,但这只能部分地解决问题.我正在寻找一种解决方案,它实际上在我的解决方案中基于WebAPI控制器创建了一个接口.如果这不存在,我会开始修补自己.我已经有了一个想法,WebAPIClientGenerator它使用反射迭代所有ApiController的.
我有一个单元测试类,其中我的被测单元依赖于另一个类。使用 Mockito 模拟依赖关系,然后使用 JUnit 的@BeforeEach注释使用在每个单元测试之前运行的通用存根进行设置。请参阅下面的伪代码。
@ExtendWith(MockitoExtension.class)
public class FooFactoryTest {
@Mock
private BarDependency barDependency;
@InjectMocks
private FooFactory unitUnderTest;
@BeforeEach
public void setup() {
when(barDependency.leftBar(any())).thenReturn(new Bar());
when(barDependency.rightBar(any())).thenReturn(new Bar());
}
... many tests ...
Run Code Online (Sandbox Code Playgroud)
此设置非常适合我的 10 个单元测试中的 9 个。不幸的是,我的一项测试失败并出现以下错误:
org.mockito.exceptions.misusing.UnnecessaryStubbingException:
Unnecessary stubbings detected.
Clean & maintainable test code requires zero unnecessary code.
Following stubbings are unnecessary (click to navigate to relevant line of code):
1. -> at nl.devillers.mockito.FooFactoryTest.setup(FooFactoryTest.java:69)
Please remove unnecessary stubbings or use 'lenient' strictness. More info: javadoc for …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 css 属性旋转 Material-ui 图标animation,但没有得到所需的结果。有人可以帮我确定这里出了什么问题吗?
https://codesandbox.io/s/nifty-nightingale-v8sqh?file=/App.tsx
我的期望是一个连续旋转的图标。
我有一个.NET库项目,大约有500个单元测试.所有这些测试在Visual Studio 2012中运行良好.但是,我的一些测试在Visual Studio 2010中失败.在这些失败的测试中,我使用Moq来模拟几个Interop类型Microsoft.Office.Interop.Excel.尝试访问这些模拟的互操作类型时,测试立即失败:
Error: Missing method 'instance class Microsoft.Office.Interop.Excel.Range [ExcelAddIn.Core] Microsoft.Office.Interop.Excel.ListRow::get_Range()' from class 'Castle.Proxies.ListRowProxy'.
Run Code Online (Sandbox Code Playgroud)
这个异常意味着我忘了在mock上设置适当的属性getter.事实并非如此:
_listRowMock.Setup(m => m.Range).Returns(_rangeMock.Object);
Run Code Online (Sandbox Code Playgroud)
现在我可以想象Moq对于Interop类型可能效果不佳.但我发现最令人费解的是,这些测试在Visual Studio 2012中运行良好,但在Visual Studio 2010中失败.
为什么我的Visual Studio会影响我的代码行为?
更新:2012年3月11日
好的,所以我明白了:
问题仍然存在:是什么导致Visual Studio 2010和Visual Studio 2012之间的行为差异?
更新:2012年9月11日
演示解决方案:http://temp-share.com/show/KdPf6066h
我已经创建了一个小解决方案来演示效果.该解决方案由一个库和一个UnitTest项目组成.两者都引用了Microsoft.Office.Interop.Excel.Range并启用了EIT.该测试在VS2012中正常工作,但在VS2010中抛出MissingMethodException.在测试中取消注释虚拟线将使其在VS2010中工作.
最终更新:2012年12月29日
我为最新的更新道歉.我的一位同事找到了解决方案,但是我无法在我的机器上重现它.与此同时,我们公司已经转向TFS2012,因此这不再是我的阻塞问题.我的同事做出的两个最重要的结论是:
我检查了我的项目并理顺了参考文献,但没有任何区别.之后,我在VS2010和VS2012中尝试了不同的平台变体,但无法产生令人满意的结果.我会接受杰里米的回答,因为这是最有帮助的.谢谢大家的帮助.
我目前正在开发一个ASP.NET MVC 4 Web应用程序项目,该项目必须遵循以下设计决策:
所有区域中的所有普通控制器(包括根)都按预期工作.但是,我的一些Web API控制器出现意外行为.例如,有两个具有相同名称但位于不同区域的Web API控制器会产生以下异常:
找到了多个匹配名为"clients"的控制器的类型.如果为此请求提供服务的路由('api/{controller}/{id}')发现多个控制器定义了相同名称但名称不同的命名空间(不受支持),则会发生这种情况.
对'clients'的请求找到了以下匹配的控制器:MvcApplication.Areas.Administration.Controllers.Api.ClientsController MvcApplication.Controllers.Api.ClientsController
这看起来很奇怪,因为我有不同的路线,应该将两者分开.这是我的管理部门的区域注册:
public class AdministrationAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Administration";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.Routes.MapHttpRoute(
name: "Administration_DefaultApi",
routeTemplate: "Administration/api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
context.MapRoute(
"Administration_default",
"Administration/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
Run Code Online (Sandbox Code Playgroud)
此外,我注意到我可以访问区域特定的Web API,同时省略呼叫区域的名称.
这里发生了什么?如何让我的Web API控制器像普通的ASP.NET MVC控制器一样运行?
我试图Button通过添加hidden属性来隐藏 Material-UI 组件,但该属性似乎被忽略了。我已经hidden在其他 Material-UI 组件上使用了该属性,例如Typography,Grid并且Box它工作正常。下面是我的代码的简化片段。单击此处在 CodeSandbox 上试用。
<Typography hidden={loading}>
Works. This text is not displayed when `loading` is truthy.
</Typography>
<Button hidden={loading}>
Doesn't work. This Button is still there!
</Button >
Run Code Online (Sandbox Code Playgroud) 我正在将Bootstrap面板与Bootstrap popover功能结合起来.目标是在用户悬停面板标题时显示弹出窗口.我已经有了这个工作,除了data-content=""当它内部有很多HTML时,该部分变得非常难以管理.
下面是我正在使用的一些示例HTML."LOADS OF HTML"部分包含div,table,p等.
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-briefcase fa-fw"></i>
<abbr title="Panel title" data-container="body" data-toggle="popover"
data-placement="bottom" data-trigger="hover" data-html="true"
data-content="<div>LOADS OF HTML HERE</div>">
Panel title
</abbr>
<div class="col-xs-6 col-md-4 pull-right" style="margin-top: -4px;">
<!-- some buttons go here -->
</div>
</div>
<!-- /.panel-heading -->
</div>
<!-- some panel content goes here -->
</div>
Run Code Online (Sandbox Code Playgroud)
其他Bootstrap插件通过允许您将HTML放在单独的元素中然后使用"data-target"属性引用该元素来解决此问题.不幸的是,Popover不支持这一点.如何在不编写特定于元素的JavaScript的情况下模仿此行为?
Java 11 向Pattern类(正则表达式的编译版本)添加了一些新方法,包括:
我想了解两者之间的区别以及何时想使用其中一种而不是另一种?
根据微软的文档NEWSEQUENTIALID,NEWSEQUENTIALID的输出是可预测的.但可预测的可预测性如何?假设我有一个生成的GUID,NEWSEQUENTIALID它有多难:
/order?id=842告诉我应用程序中有842个订单.以下是关于我正在做什么以及各种权衡取舍的背景信息.
使用GUID比整数作为主键的一个安全好处是GUID很难猜到.例如,黑客看到/user?id=845他可能尝试访问的URL /user?id=0,因为数据库中的第一个用户很可能是管理用户.此外,黑客可以迭代/user?id=0..1..2以快速收集所有用户.
同样,整数的隐私缺点是它们泄露信息./order?id=482告诉我,网上商店自实施以来已经有482个订单.
不幸的是,使用GUID作为主键具有众所周知的性能缺点.为此,SQL Server引入了该NEWSEQUENTIALID功能.在这个问题中,我想了解输出的可预测性NEWSEQUENTIALID.
我在一个新项目中使用Material-UI V4、Material-UI 日期/时间选择器和date-fns 。我的页面非常简单,我使用DateTimePickerMaterial UI 中的以下组件:
<DateTimePicker
label="Date and time"
inputVariant="outlined"
value={searchDateTime}
disablePast
onChange={handleSearchDateTimeChange}
showTodayButton
fullWidth
disabled={isScanning}
/>
Run Code Online (Sandbox Code Playgroud)
单击日期选择器后,我的应用程序崩溃并出现以下错误:
类型错误:utils.getYearText 不是函数
我怎样才能解决这个问题?
版本来自package.json
"@date-io/date-fns": "^2.11.0",
"@material-ui/core": "^4.12.3",
"@material-ui/icons": "^4.11.2",
"@material-ui/pickers": "^3.3.10",
"date-fns": "^2.26.0",
"next": "10.0.5",
"react": "17.0.2",
"react-dom": "17.0.2",
Run Code Online (Sandbox Code Playgroud) 我需要在Enter按下键时提交更改,而不是键入换行符号.我正在使用Ember.js和稍微定制的TextArea助手.
这是我在模板中的内容
{{edit-item placeholder="Weight" value=weight insert-newline="acceptChanges" focus-out="acceptChanges"}}
Run Code Online (Sandbox Code Playgroud)
在我的帮手
App.EditItemView = Em.TextArea.extend
didInsertElement: ->
this.$().focus()
this.$().blur()
focusIn: ->
$this = this.$()
$this.get(0).select()
# fix webkit select problems
mouseUpHandler = ->
$this.off("mouseup", mouseUpHandler)
return false
$this.mouseup(mouseUpHandler)
attributeBindings: ['style', 'placeholder']
Em.Handlebars.helper 'edit-item', App.EditItemView
Run Code Online (Sandbox Code Playgroud)
在我的acceptChagnges行动中
# In controller action hook up
acceptChanges: ->
$(document.activeElement).blur()
@get('model').save()
Run Code Online (Sandbox Code Playgroud)
真正的问题是,当选择文本和用户类型输入要接受的键时,它还会键入换行符替换textarea中的所有内容,因此唯一的换行符将被接受.
如何防止键入新行,但触发事件接受更改?
我正在开发一个阵营目前正使用的绑在GraphQL突变形式useMutation的阿波罗客户端。在服务器上,我执行一些验证,如果出现错误,我拒绝突变。在客户端,我使用error对象来接收验证错误。我的钩子看起来像这样:
const [addDrone, { error }] = useMutation(ADD_DRONE)
Run Code Online (Sandbox Code Playgroud)
因此,我将error对象解包并在对话框中将其呈现给用户,让他/她知道出了什么问题。在用户关闭对话框后,我想让用户有机会修复错误,以便他/她可以重新提交表单。这就是事情变得毛茸茸的地方。我想error在用户关闭对话框时清除对象,但由于这个变量来自useMutation钩子,我无法改变或重置它。看起来useMutation被设计为一次发射,不再使用。
所以我的问题是,有没有办法将useMutation钩子“重置”回它的原始状态?
javascript ×4
reactjs ×4
c# ×3
material-ui ×3
html ×2
java ×2
jquery ×2
typescript ×2
.net ×1
apollo ×1
asp.net ×1
asp.net-mvc ×1
date-fns ×1
ember.js ×1
graphql ×1
guid ×1
java-11 ×1
junit ×1
mockito ×1
moq ×1
next.js ×1
popover ×1
primary-key ×1
react-apollo ×1
react-hooks ×1
regex ×1
rest ×1
sql ×1
sql-server ×1
unit-testing ×1