我希望大家都知道我的数据库中的表是如何相互关联的(即PK/FK/UK),因此我创建了SQL Server中所有表的数据库图.创建的图表不易读取,必须滚动(水平,有时垂直)以查看另一端的表格.
简而言之,在了解许多表之间的关系时,SQL的db图不是UI友好的.
我的(简单)问题:是否有像数据库图这样的东西可以做什么db图表但是以"好"的方式呢?
在谈论.NET中的身份时,我们有了Principal的想法.有接口IPrincipal,并与它一起实现ClaimsPrincipal.我们甚至可以随时访问该接口的一个实现实例Thread.CurrentPrincipal.
现在,我从未明白这个校长是什么.实际上,起初我认为它代表了当前用户的身份.但事实并非如此,实际上还有另一个界面IIdentity和实现ClaimsIdentity.搜索一下我在MSDN上发现了以下内容:
主体对象表示代表其运行的用户的安全上下文,包括该用户的身份(IIdentity)以及它们所属的任何角色.
但代表代码运行的用户的这种安全上下文真的意味着什么?我想我还没有得到它应该代表什么.
我一直在尝试优化我的代码,使其更简洁和可读,并希望我没有造成更差的性能.我认为我的更改可能会减慢我的应用程序,但它可能只是在我脑海中.两者之间是否有任何性能差异:
Command.Parameters["@EMAIL"].Value = email ?? String.Empty;
Run Code Online (Sandbox Code Playgroud)
和
Command.Parameters["@EMAIL"].Value = (email == null) ? String.Empty: email;
Run Code Online (Sandbox Code Playgroud)
和
if (email == null)
{
Command.Parameters["@EMAIL"].Value = String.Empty
}
else
{
Command.Parameters["@EMAIL"].Value = email
}
Run Code Online (Sandbox Code Playgroud)
我对可读性的偏好是空合并运算符,我只是不希望它影响性能.
我必须检查一组文件路径是否代表现有文件.
它工作正常,除非路径包含不在当前网络上的计算机上的网络共享.在这种情况下,超时需要很长时间(30或60秒).
问题
有没有办法缩短非现有网络共享的超时?(我确信当他们确实存在时他们会很快回答,所以超时1秒就可以了)
有没有其他方法可以解决这个问题,而无需开始缓存并使算法更复杂?(即,我已经知道这些X网络共享不存在,跳过其余的匹配路径)
更新:使用线程工作,但不是特别优雅
public bool pathExists(string path)
{
bool exists = true;
Thread t = new Thread
(
new ThreadStart(delegate ()
{
exists = System.IO.File.Exists(path);
})
);
t.Start();
bool completed = t.Join(500); //half a sec of timeout
if (!completed) { exists = false; t.Abort(); }
return exists;
}
Run Code Online (Sandbox Code Playgroud)
此解决方案避免了每次尝试需要一个线程,首先检查哪些驱动器可以访问并将其存储在某处.
首先,您可以在IsDriveReady函数中设置"超时"值.我把它设置为5秒,但设置它适合任何适合你的.
下面使用3种方法:
- 第一个是WNetGetConnection API函数,它获取驱动器的UNC(\ servername\share)
- 第二个是我们的主要方法:Button1_Click事件
- 第三个是ping服务器的IsDriveReady功能.
这对我很有用!干得好:
Run Code Online (Sandbox Code Playgroud)'This API Function will be used to get the UNC of the drive Private Declare Function WNetGetConnection Lib …
我正在尝试使用Tor-Server作为代理HttpWebRequest,我的代码如下所示:
HttpWebRequest request;
HttpWebResponse response;
request = (HttpWebRequest)WebRequest.Create("http://www.google.com");
request.Proxy = new WebProxy("127.0.0.1:9051");
response = (HttpWebResponse)request.GetResponse();
response.Close();
Run Code Online (Sandbox Code Playgroud)
它与"正常"代理完美配合,但使用Tor我在调用时遇到异常
GetResponse() with Status = ServerProtocolViolation. The message is (in German...):Message = "Der Server hat eine Protokollverletzung ausgeführt.. Section=ResponseStatusLine"
我的C#程序中有一个整数列表.但是,我只在运行时知道列表中的项目数.
让我们说,为了简单起见,我的列表是{1,2,3}现在我需要生成所有可能的组合,如下所示.{1,2,3} {1,2} {1,3} {2,3} {1} {2} {3}
有人可以帮忙吗?
在C#中,default(Nullable<long>)(或default(long?))和default(long)?之间有区别吗?
Long只是一个例子,它可以是任何其他struct类型.
我们最近从公司的VS2013搬到了VS2017.升级后,我们的代码库将不再构建.我们会收到以下错误:
以下方法或属性之间的调用不明确:'IRepository <T> .Get(object,params Expression <Func <T,object >> [])'和'IRepository <T> .Get(object,params string [] )"
这是呼叫本身:
this.mainRepository.Get(newEntity.Id);
Run Code Online (Sandbox Code Playgroud)
...和接口定义:
public interface IRepository<T> where T : class
{
T Get(object id, params Expression<Func<T, object>>[] includeExprs);
T Get(object id, params string[] includeExprs);
}
Run Code Online (Sandbox Code Playgroud)
我想知道这里是否有人可以解释为什么会这样.我怀疑C#6.0 的新改进方法重载解析功能,但查看语言规范我无法找出导致该问题的确切规则.
编辑
我写了一篇关于这个问题的后续博客文章:http://codewithstyle.info/method-overload-resolution-in-c-6-0-an-interesting-bug-story
这很奇怪.我的解决方案中有一个C#类库项目.如果我.cs在此项目中打开一个文件,Project代码编辑器上的下拉列表显示它属于"杂项文件".

其他症状:如果我转到项目的属性并查看Assembly Information,尽管AssemblyInfo.cs文件中存在值,但所有值都是空白的.
这两个都很烦人,但问题是

我试过了:
.csproj文件并与解决方案中的其他人进行比较(没有快乐).csproj文件并覆盖旧文件(一直工作直到我将分支合并到主干,然后重新出现问题)谷歌一无所获.有没有人对这里发生了什么有任何想法?
我刚刚更新到Visual Studio 2015 Update 1,每当我开始调试时我都会收到错误:
内部诊断中心例外.有关详细信息,请参阅日志
我该如何解决这个问题,或者禁用错误?
我不知道应该检查哪个日志文件.在ActivityLog.xml,最后一个条目是昨天,因此不包含任何有用的内容.接下来,我知道有一个MEF(Microsoft.VisualStudio.Default.err)的日志文件,但那是空的.怎么调查这个?
c# ×8
.net ×3
c#-2.0 ×1
c#-6.0 ×1
combinations ×1
database ×1
default ×1
if-statement ×1
networking ×1
nullable ×1
operators ×1
performance ×1
proxy ×1
security ×1
sql ×1
sql-server ×1
t-sql ×1
timeout ×1
tor ×1