我注意到,在Git中的最新版本,默认现在是弹出一个"混帐凭据管理器的Windows"对话框中,而不是在bash的提示我要我的密码提示每次的.我真的很讨厌这种行为.我怎样才能禁用它并返回每次在bash shell输入密码?
顺便说一句,我不希望git 以任何方式缓存我的凭据,无论是通过Windows凭据还是某些内部守护进程.我想禁用所有凭据缓存.
我在git中变基础,我得到的一个冲突是"两个都添加" - 也就是说,在我的分支中已经独立添加了完全相同的文件名,并且在分支中我正在重新定位. git status告诉我:
# Unmerged paths:
# (use "git reset HEAD <file>..." to unstage)
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both added: src/MyFile.cs
Run Code Online (Sandbox Code Playgroud)
我的问题是,我该如何解决这个问题?我必须使用合并工具还是只能从命令行执行此操作?如果我git rm src/MyFile.cs,git如何知道我要删除哪个文件版本以及我想保留哪个文件?
我正在使用ASP.NET WebApi来创建RESTful API.我正在我的一个控制器中创建一个PUT方法,代码如下所示:
public HttpResponseMessage Put(int idAssessment, int idCaseStudy, string value) {
var response = Request.CreateResponse();
if (!response.Headers.Contains("Content-Type")) {
response.Headers.Add("Content-Type", "text/plain");
}
response.StatusCode = HttpStatusCode.OK;
return response;
}
Run Code Online (Sandbox Code Playgroud)
当我通过AJAX将浏览器推送到该位置时,它给了我这个例外:
未使用的标题名称.确保请求标头与HttpRequestMessage一起使用,响应标头与HttpResponseMessage一起使用,内容标头与HttpContent对象一起使用.
但Content-Type对于回复来说,这不是一个完全有效的标题吗?为什么我得到这个例外?
每次创建一个不结束"异步"的异步方法时,如何让Visual Studio给我一个命名警告?
这是异步方法的推荐约定,但我经常发现自己忘记添加该后缀并且警告会很有用.
根据这个论坛的讨论,SQL Server(我使用2005但我收集这个也适用于2000和2008)默认将varchar你指定的任何s指定为varchar的长度,即使直接插入该字符串也是如此.INSERT实际上会导致错误.例如.如果我创建此表:
CREATE TABLE testTable(
[testStringField] [nvarchar](5) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
然后当我执行以下内容时:
INSERT INTO testTable(testStringField) VALUES(N'string which is too long')
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
String or binary data would be truncated.
The statement has been terminated.
Run Code Online (Sandbox Code Playgroud)
大.保留了数据完整性,并且调用者知道它.现在让我们定义一个存储过程来插入:
CREATE PROCEDURE spTestTableInsert
@testStringField [nvarchar](5)
AS
INSERT INTO testTable(testStringField) VALUES(@testStringField)
GO
Run Code Online (Sandbox Code Playgroud)
并执行它:
EXEC spTestTableInsert @testStringField = N'string which is too long'
Run Code Online (Sandbox Code Playgroud)
没有错误,1排受影响.将一行插入表中,testStringField格式为'strin'.SQL Server以静默方式截断存储过程的varchar参数.
现在,这种行为有时可能很方便,但我认为没有办法把它关掉.这非常烦人,因为如果我将一个字符串传递给存储过程,我希望错误.似乎有两种方法可以解决这个问题.
首先,将存储过程的@testStringField参数声明为大小为6,并检查其长度是否超过5.这看起来像是一个黑客攻击并涉及大量的样板代码.
其次,只需声明所有存储过程varchar参数varchar(max),然后让INSERT存储过程中的语句失败.
后者似乎工作正常,所以我的问题是:varchar(max)在SQL …
我想禁用具有实体框架代码优先的链接表的级联删除.例如,如果许多用户拥有多个角色,并且我尝试删除角色,我希望阻止删除,除非当前没有与该角色关联的用户.我已经删除了我的级联删除约定OnModelCreating:
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
...
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
Run Code Online (Sandbox Code Playgroud)
然后我设置了用户角色链接表:
modelBuilder.Entity<User>()
.HasMany(usr => usr.Roles)
.WithMany(role => role.Users)
.Map(m => {
m.ToTable("UsersRoles");
m.MapLeftKey("UserId");
m.MapRightKey("RoleId");
});
Run Code Online (Sandbox Code Playgroud)
然而,当EF创建数据库时,它会为外键关系创建一个删除级联,例如.
ALTER TABLE [dbo].[UsersRoles] WITH CHECK ADD CONSTRAINT [FK_dbo.UsersRoles_dbo.User_UserId] FOREIGN KEY([UserId])
REFERENCES [dbo].[User] ([UserId])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[UsersRoles] WITH CHECK ADD CONSTRAINT [FK_dbo.UsersRoles_dbo.Role_RoleId] FOREIGN KEY([RoleId])
REFERENCES [dbo].[Role] ([RoleId])
ON DELETE CASCADE
GO
Run Code Online (Sandbox Code Playgroud)
如何阻止EF生成此删除级联?
我想编写一些C#代码来使用一些种子数据初始化我的数据库.显然,这需要能够在插入时设置各种Identity列的值.我正在使用代码优先的方法.默认情况下,DbContext处理数据库连接,因此您不能SET IDENTITY_INSERT [dbo].[MyTable] ON.所以,到目前为止我所做的是使用DbContext构造函数,它允许我指定要使用的数据库连接.然后,我设置IDENTITY_INSERT到ON该数据库的连接,然后尝试使用实体框架插入我的记录.这是我到目前为止所得到的一个例子:
public class MyUserSeeder : IEntitySeeder {
public void InitializeEntities(AssessmentSystemContext context, SqlConnection connection) {
context.MyUsers.Add(new MyUser { MyUserId = 106, ConceptPersonId = 520476, Salutation = "Mrs", Firstname = "Novelette", Surname = "Aldred", Email = null, LoginId = "520476", Password="28c923d21b68fdf129b46de949b9f7e0d03f6ced8e9404066f4f3a75e115147489c9f68195c2128e320ca9018cd711df", IsEnabled = true, SpecialRequirements = null });
try {
connection.Open();
SqlCommand cmd = new SqlCommand("SET IDENTITY_INSERT [dbo].[MyUser] ON", connection);
int retVal = cmd.ExecuteNonQuery();
context.SaveChanges();
}
finally {
connection.Close(); …Run Code Online (Sandbox Code Playgroud) 我在Visual Studio中创建了一个全新的MVC4 Web应用程序,除了为它添加一个Home控制器和一个"Hello world"索引视图之外,它没有做任何事情.然后我安装了MiniProfiler NuGet包并将必要的几行放入_Layout.cshtml.这是我在发布模式下运行网站时获得的(在IIS中托管):

渲染时间因页面加载而异,但130ms的速度与它的速度差不多.这对我来说似乎有点慢,因为我已经看到其他人在30ms或更快时间内呈现页面.有关为什么渲染会因为一个全新的空MVC4项目而变慢的想法?我的处理器是Intel Core i5-2400,机器有16GB RAM.
顺便说一句,这不是第一次加载页面; 在获得130ms的结果之前,我重新加载了几次页面.
更新:
我按照PSCoder的答案中的建议(删除除RazorViewEngine之外的所有内容),并将渲染时间减半:

这真的很好,但是对于Render页面的主要操作我仍然可以达到70ms或更高; 理想情况下,我想将其减半或更好.
具体来说,我想问:
我刚刚在Windows 7上安装了Git for Windows 2.5.0,.bashrc当我运行Git Bash时,我的文件似乎没有被执行.
我创建了这样的文件:
Administrator@HintTech-Dev MINGW64 /
$ pwd
/
Administrator@HintTech-Dev MINGW64 /
$ cd ~
Administrator@HintTech-Dev MINGW64 ~
$ pwd
/c/Users/Administrator
Administrator@HintTech-Dev MINGW64 ~
$ touch .bashrc
Administrator@HintTech-Dev MINGW64 ~
$ vi .bashrc
[... I insert the line "ZZZTESTVAR=234" (without the quotes) into the file in vim ...]
Administrator@HintTech-Dev MINGW64 ~
$ exit
Run Code Online (Sandbox Code Playgroud)
然而,当我下次运行Git Bash时:
Administrator@HintTech-Dev MINGW64 /
$ set | grep ZZZ
Administrator@HintTech-Dev MINGW64 /
$ cat ~/.bashrc
ZZZTESTVAR=234
Administrator@HintTech-Dev MINGW64 /
$ …Run Code Online (Sandbox Code Playgroud) 我知道在大多数MVC框架中,例如,查询字符串参数和表单参数都可用于处理代码,并且通常合并为一组参数(通常使用POST优先).但是,根据HTTP规范进行是否有效?说你要发帖到:
http://1.2.3.4/MyApplication/Books?bookCode=1234
Run Code Online (Sandbox Code Playgroud)
...并提交一些更新,例如对图书名称为1234的图书名称进行更改,您希望处理代码将bookCode查询字符串参数考虑在内,并使用更新后的图书信息将POST表格参数更新.这是有效的,这是一个好主意吗?
c# ×4
git ×3
asp.net ×2
bash ×2
database ×2
sql-server ×2
.net ×1
asp.net-mvc ×1
asynchronous ×1
http ×1
merge ×1
performance ×1
post ×1
query-string ×1
rebase ×1
rest ×1
sql ×1
truncate ×1
truncation ×1
windows ×1
windows-7 ×1