为什么C#允许这样:
var s = "Nice";
switch (s)
{
case "HI":
break;
const string x = "Nice";
case x:
Console.Write("Y");
break;
}
Run Code Online (Sandbox Code Playgroud)
但不是这个:
var s = "Nice";
switch (s)
{
const string x = "Nice";
case x:
Console.Write("Y");
break;
}
Run Code Online (Sandbox Code Playgroud) 希望这是一个简单的解决方案,但我正在尝试过滤以下数据: -
我从数据库中获取的日期基本上是一个时间戳.
这是我试过的: -
今天
SELECT n.title, COUNT(*) AS times FROM node_view_count WHERE timestamp > DATE_SUB(NOW(), INTERVAL 1 DAY)
Run Code Online (Sandbox Code Playgroud)昨天
SELECT n.title, COUNT(*) AS times FROM node_view_count WHERE timestamp > DATE_SUB(NOW(), INTERVAL 7 DAYS)
Run Code Online (Sandbox Code Playgroud)...
它并没有真正起作用.
任何的想法?
使用DevExpress的GridView,我想在选择(或简单地点击)单元格时触发(clientside)事件.
已经有一种方法可以获得整行的点击事件,但是既没有摆弄也没有文档给我任何线索如何为细胞实现这一点.
这就是我对行的看法:
Html.DevExpress().GridView(settings =>
{
// removed a lot of code here
settings.ClientSideEvents.RowDblClick = "OnGridRowDblClick";
}).Bind(Model).GetHtml()
Run Code Online (Sandbox Code Playgroud)
这将导致OnGridRowDblClick双击行时调用javascript函数.理想情况下应该有类似的东西
settings.ClientSideEvents.CellClick = "OnCellClick";
但是,这不存在,我也找不到任何可以实现的目标.
我为我们的项目设置了Unity for dependency injection.项目本身是一个使用MVC和Web API的ASP.NET应用程序.
对于数据库上下文,我正在使用PerRequestLifetimeManager.这样做是为了使业务逻辑的不同位使用相同的上下文(因而是相同的事务).
为了能够使用PerRequestLifetimeManager,我添加了针对ASP.NET MVC的nuget包Unity引导程序和ASP.NET Web API的Unity引导程序的引用.
要在Web API中使用此生命周期管理器,已在启动代码中添加以下行:
Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
Run Code Online (Sandbox Code Playgroud)
Unity容器是为MVC和Web API设置的:
var container = BuildUnityContainer();
GlobalConfiguration.Configuration.DependencyResolver = new Microsoft.Practices.Unity.WebApi.UnityDependencyResolver(container);
System.Web.Mvc.DependencyResolver.SetResolver(new Microsoft.Practices.Unity.Mvc.UnityDependencyResolver(container));
Run Code Online (Sandbox Code Playgroud)
在构建Unity容器时,数据库上下文设置为按请求以下列方式解析:
container.RegisterType<IDataContext>(new PerRequestLifetimeManager(),
new InjectionFactory(c =>
{
// Some code
return new DataContext(/* params */);
}
));
Run Code Online (Sandbox Code Playgroud)
但是,似乎这段代码并没有DataContext为每个请求提供新的代码.它在一个请求中给出了我在不同地方的相同上下文(这很好).但是,后续(web api)请求被赋予了相同的实例DataContext,我希望为每个新请求创建一个新的请求.我也希望在DataContext请求完成后(类实现IDisposable)正确处理.
这里发生了什么?我是否缺少一些配置才能使其正常工作?或者这不应该像我期望的那样工作?
在我中,Application_Start我使用Unity-AutoRegistration工具配置Unity:
UnityFactory.Configure(config => config
.Include(If.ImplementsITypeName, Then.Register())
.ExcludeSystemAssemblies()
);
Run Code Online (Sandbox Code Playgroud)
我的UnityFactory课是静态的。Configure工作原理如下:
public static void Configure(Func<IAutoRegistration,IAutoRegistration> configuration)
{
// Store the configuration to be able to apply it again when needed
UnityFactory.configuration = configuration;
// Create new UnityContainer
container = new UnityContainer();
// Apply configuration
configuration(container.ConfigureAutoRegistration()).ApplyAutoRegistration();
}
Run Code Online (Sandbox Code Playgroud)
它在IIS7下运行,并且在启动时一切正常。
每当回收应用程序池时,它将停止工作。该配置以某种方式弄乱了,它不再能够解析我的类。然而,静态字段configuration的UnityFactory类仍然包含正如所提供的第一次配置。因此,类本身并没有改变。
Application_Start回收应用程序池后不会触发该方法,因此不会再次应用配置。
如果我设置了一个断点并再次手动应用该配置,那么所有这些都将再次起作用。
这是怎么回事 为什么Unity会忘记我的所有课程?是否有我可以订阅的事件,该事件可以让我知道何时回收池?
我有一个PostgreSQL数据库,它使用字符编码WIN1252.
查询数据库时,某些记录在尝试读取数据时会产生错误,因为它正在尝试将其转换为UTF8.在包含某些非拉丁字符的某些外来名称上会发生这种情况.
错误是:
ERROR: 22P05: character with byte sequence 0x81 in encoding "WIN1252" has no equivalent in encoding "UTF8"
Run Code Online (Sandbox Code Playgroud)
它发生在我打电话Read()的时候NpgsqlDataReader.
我的连接定义为:
new NpgsqlConnection("Server=127.0.0.1;Port=5432;Database=xyz;User Id=****;Password=****;");
Run Code Online (Sandbox Code Playgroud)
如何使用C#读取此数据?
c# ×3
asp.net-mvc ×2
.net ×1
date ×1
devexpress ×1
encoding ×1
filter ×1
iis-7 ×1
mysql ×1
npgsql ×1
postgresql ×1
select ×1