出于好奇:
此代码有效并执行:
public class Program
{
private static DateTime date;
public static void Main()
{
Console.WriteLine(date.ToString("o"));
}
}
Run Code Online (Sandbox Code Playgroud)
看到它在.NET Fiddle上工作
但这甚至不编译(未分配的局部变量):
public class Program
{
public static void Main()
{
DateTime date;
Console.WriteLine(date.ToString("o"));
}
}
Run Code Online (Sandbox Code Playgroud)
看到它(不是)在.NET Fiddle上工作
DateTime是不可为空的值类型,因此不需要将其分配和初始化为具有值,它具有默认值。
那么,为什么编译器允许DateTime字段版本进行编译,而不让本地变量版本进行编译?当代码被编译为IL时,是什么阻止了使用值类型的局部变量?
场景:使用默认设置和连接端口 (1433) 的 SQL Server 2014 Developer,使用 Entity Framework 6 的 C#。
在我的 C# 应用程序中使用带有 EF6 的 SQL Server,以下连接字符串非常有用:
Data Source=localhost;Initial Catalog =...
Run Code Online (Sandbox Code Playgroud)
但是这个连接字符串失败了:
Data Source=localhost,1433;Initial Catalog =...
Run Code Online (Sandbox Code Playgroud)
是的,这是正确的端口。
通过查看 SQL Server 的配置,我找到了一个通过激活 TCP/IP 协议的解决方案,但是,由于它是默认端口,它不是应该像其他没有该端口的连接字符串一样工作吗?即使 TCP/IP 已停用(这是默认设置)?
谢谢!
考虑这两个代码:
运用 Func<T, bool>
public IQueryable<Blog> GetBlogs(Func<Blog, bool> predicate)
{
return context.Blogs.Where(predicate).AsQueryable();
}
Run Code Online (Sandbox Code Playgroud)
运用 Expression<Func<T, bool>>
public IQueryable<Blog> GetBlogs(Expression<Func<Blog, bool>> predicate)
{
return context.Blogs.Where(predicate); // No need of AsQueryable
}
Run Code Online (Sandbox Code Playgroud)
因此,在第一种情况下,实体框架将始终返回数据库中的所有对象,对吧?那么打电话有AsQueryable什么意义呢?无论如何它有帮助吗?它与Expression版本相似?