小编DrC*_*ste的帖子

使用数据注释的有条件的必需属性

我有一个这样的课:

public class Document
{
   public int DocumentType{get;set;}

   [Required]
   public string Name{get;set;}

   [Required]
   public string Name2{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我[Required]NameName2属性上放置数据注释,那么一切正常,如果NameName2为空,验证将引发错误.

但我希望Name只有当字段DocumentType等于1 Name2时才需要字段,只有当DocumentType等于2 时才需要字段.

public class Document
{
   public int DocumentType{get;set;}

   [Required(Expression<Func<object, bool>>)]
   public string Name{get;set;}

   [Required(Expression<Func<object, bool>>)]
   public string Name2{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

但我知道我不能,它会导致错误.我该怎么做才能满足这个要求?

c# requiredfieldvalidator required data-annotations

55
推荐指数
5
解决办法
5万
查看次数

为什么文件在Visual Studio中保存后偶尔会变为只读模式?

我的Visual Studio有一个非常奇怪的问题.我经常按CTRL+ S经常(称我为偏执狂,但是几年前我养成了这个习惯,我真的不想摆脱它:-))

现在我遇到的问题是我正在编辑一个文件,根据我在Word中打开的规范更改了几十个字符串; 所以我经常切换这两个任务,进行一两次更改,然后保存.

奇怪的是,每隔一段时间,保存后,我的文件突然处于只读模式,所以我无法浏览我的更改(CTRL+ Z/ CTRL+ Y)并且必须重新打开该文件才能继续编码和祈祷.事实上,当发生这种情况时,我觉得随意:

有时我只改变1个东西并保存,然后它立即只读,在其他情况下,它会让我编辑几个东西,直到它被卡住.

其他人也经历过这个并且可能得到了提示?也许我点了一些神奇的热键或什么?

visual-studio visual-studio-2012 visual-studio-2013

12
推荐指数
1
解决办法
5525
查看次数

如何使用EnterpriseLibrary.Logging登录UTF-8

我对EnterpriseLibrary.Logging的搜索很不满意.我有一个像这样的监听器和格式化程序:

<add name="NormalLogListener"
     type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging"
     listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging"
     fileName="logs/MVC22.log" 
     footer="" 
     formatter="ShortLogFormatter" 
     header="" 
     rollInterval="Day" 
     timeStampPattern="yyyy-MM-dd" 
     maxArchivedFiles="14" />
Run Code Online (Sandbox Code Playgroud)

...

<add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging" 
     template="{timestamp(local)} - {severity} - {category} - {message}"
     name="ShortLogFormatter" />
Run Code Online (Sandbox Code Playgroud)

我在多个项目中使用它,它工作正常.

除了一件事,我希望EnterpriseLibrary使用UTF-8编码创建我的日志文件(我默认获得ANSI文件),但不幸的是我不知道如何做到这一点.

我在字符串中有特殊字符,我希望能够登录到我的文件中(例如变音符号); 我看到日志记录工作正常,当我将文件转换为UTF-8并让它进一步使用时,但我真的想让它以这种方式创建.

这可以在xml配置中或其他地方完成吗?

在此先感谢您的帮助!

c# logging encoding enterprise-library-5

11
推荐指数
1
解决办法
1160
查看次数

为什么我不能将系统时间设置为接近夏令时转换的时间

我的时代,他们正在改变,也就是说,因为我需要他们.我正在测试一些涉及我使用的调度程序的情况,这涉及到夏令时之间转换的行为.

代码

这篇文章我得到了一个工作方法,使我能够以编程方式更改系统日期(重新发布大部分代码):

[StructLayout(LayoutKind.Sequential)]
public struct SYSTEMTIME
{
    public short wYear;
    public short wMonth;
    public short wDayOfWeek;
    public short wDay;
    public short wHour;
    public short wMinute;
    public short wSecond;
    public short wMilliseconds;
}

[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool SetSystemTime(ref SYSTEMTIME st);
Run Code Online (Sandbox Code Playgroud)

为了我自己的方便,我只是在我实际调用的函数中包装它:

public static void SetSytemDateTime(DateTime timeToSet)
{
    DateTime uniTime = timeToSet.ToUniversalTime();
    SYSTEMTIME setTime = new SYSTEMTIME()
    {
        wYear = (short)uniTime.Year,
        wMonth = (short)uniTime.Month,
        wDay = (short)uniTime.Day,
        wHour = (short)uniTime.Hour,
        wMinute = (short)uniTime.Minute, …
Run Code Online (Sandbox Code Playgroud)

.net c# timezone datetime dst

11
推荐指数
2
解决办法
1420
查看次数

Msbuild只生成一个包,但在使用发布配置文件时不会部署它.为什么?

MSBuild似乎真的很喜欢我.最近,我正在尝试从命令行构建和部署的不同可能性.但是,当我将发布配置文件传递给MSBuild时,我遇到了一些看似奇怪的行为.

这是我刚刚做的一个例子:

我暂时使用以下命令部署到本地IIS:

msbuild D:\PathToFile\DeployDBVariation01\DeployDBVariation01\DeployDBVariation01.csproj
    /p:Configuration=Release;
    Platform=AnyCpu;
    DeployOnBuild=true;
    DeployTarget=MSDeployPublish;
    MSDeployServiceURL="localhost";
    DeployIisAppPath="DeployApp/DeployThis";
    MSDeployPublishMethod=InProc;
    Username=thisIsNotActuallyMyUsername;
    password=guesswhat;
    AllowUntrustedCertificate=true
Run Code Online (Sandbox Code Playgroud)

这有效!之后它已成功部署,我可以在浏览器中调用它.

但是,由于Visual Studio使我们能够轻松使用发布配置文件,因此我想通过命令行与MSBuild一起尝试,并尝试使用以下命令:

msbuild D:\PathToFile\DeployDBVariation01\DeployDBVariation01\DeployDBVariation01.csproj
    /p:DeployOnBuild=true;
    AllowUntrustedCertificate=true;
    PublishProfile=ReleaseLocal
Run Code Online (Sandbox Code Playgroud)

ReleaseLocal是我在Visual Studio中创建的配置文件,它看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <MSDeployServiceURL>localhost</MSDeployServiceURL>
    <DeployIisAppPath>DeployApp/DeployThis</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>InProc</MSDeployPublishMethod>
    <EnableMSDeployBackup>False</EnableMSDeployBackup>
    <UserName />
    <_SavePWD>False</_SavePWD>
    <PublishDatabaseSettings>
      <Objects xmlns="">
        <ObjectGroup Name="DefaultConnection" Order="1" Enabled="False">
          <Destination Path="Data Source=.\SQLEXPRESS;Initial Catalog=HorstDataProductive;User ID=sa;Password=GuessWhat" />
          <Object Type="DbDacFx">
            <PreSource Path="Data Source=.\SQLEXPRESS;Initial Catalog=HorstData;User ID=sa;Password=GuessWhat" includeData="False" />
            <Source Path="$(IntermediateOutputPath)AutoScripts\DefaultConnection_IncrementalSchemaOnly.dacpac" dacpacAction="Deploy" />
          </Object>
          <UpdateFrom Type="Web.Config">
            <Source MatchValue="Data …
Run Code Online (Sandbox Code Playgroud)

msbuild web-deployment msdeploy webdeploy

10
推荐指数
1
解决办法
2万
查看次数

"AutoParameterizationWebConfigConnectionStrings" - 选项是防止连接字符串标记化的唯一方法吗?

我仍然试图了解MSBuild的事情.目前,我正在使用PackageWeb-Nuget-Package(视频演示)中生成的脚本来部署via powershell脚本.我已经尝试了几天了,它似乎工作.但是"突然"生成的web.config中的连接字符串被标记化,而不是我看到的连接字符串

connectionString="$(ReplacableToken_DefaultConnection-Web.config Connection String_0)
Run Code Online (Sandbox Code Playgroud)

我"突然"写道,因为我无法将这个(对我来说是新的)行为与我在前几个小时里完成的任何事情联系起来.

总结一下:从包的部署工作正常,也正在应用正确的配置转换,但我最终得到了这个标记化的连接字符串.

我意识到如果我插入,我可以解决这个问题

<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>
Run Code Online (Sandbox Code Playgroud)

到PropertyGroup(我只是把它放到Nuget-Package创建的生成的目标文件中)

但是我真的不喜欢这个,不得不将这个附加值插入到可能需要它的每个项目中; 特别是因为我不知道我首先需要这个调整.昨天它工作,我没有将这个额外的行插入任何项目或目标文件.

所以我希望也许有人知道额外的开关,技巧或设置,这可能会对它的工作方式产生额外的影响.

msbuild msdeploy msbuild-propertygroup webdeploy

6
推荐指数
2
解决办法
4788
查看次数

Join子句中的case语句

我试图从多个表中获取数据,但不知道如何做到这一点.下面是我正在使用的查询,但它不起作用.请建议.

SELECT DISTINCT 
        VWL.Type, VWL.ID AS CompanyID,VWL.Name
    FROM dbo.LeadList_New AS VWL 
    LEFT OUTER JOIN
        CASE VWL.Type WHEN 'COMPANY' THEN
            CRMCompanyEmailAddress AS CE ON VWL.ID=CE.CRMCompanyID
        WHEN 'PERSON' THEN
            PersonEmailAddress AS PE ON VWL.ID=PE.PersonID
        END
Run Code Online (Sandbox Code Playgroud)

sql sql-server

5
推荐指数
1
解决办法
1万
查看次数

视图中的 SQL case 语句

ALTER View Myview AS

(SELECT
        TOP 1 ORGANIZATION_id
    FROM ORGANIZATION 
    WHERE code = mo.FunctionCode) org_id,
(SELECT
        TOP 1 ID
    FROM DEPARTMENT
    WHERE [NAME] = mo.Code) dep_id,
(SELECT
        TOP 1 Name
    FROM DEPARTMENT
    WHERE [ID] = dep_id) Dep_Name,
(SELECT
        TOP 1 Org_Name
    FROM CA_ORGANIZATION
    WHERE [organization_id] = org_id) Org_Name,
(CASE    
    WHEN Dep_Name = 'sales' AND Org_Name = 'Advanture'
        THEN 'salesTeam'
    WHEN Dep_Name ! = 'Sales' AND Org_Name = 'External'
        THEN 'ExternalTeam'
    ELSE
        'DefaultTeam'
    END) type

    FROM detail_view dv
    LEFT OUTER JOIN …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

4
推荐指数
1
解决办法
3万
查看次数

SQL Server - 任何等效的Excel的CHOOSE功能?

如果以前没有问过这件事我会感到惊讶,但是我找不到任何东西.Excel有一个功能

CHOOSE(n, x_1, x_2, x_3, ...)
Run Code Online (Sandbox Code Playgroud)

对于给定的n值,返回x_n.

SQL Server 2008是否支持SQL(标准或MS特定)中的任何类似内容?我知道应该使用数据库中的查找表来实现它,但是对于我正在做的事情,我无法将新表添加到数据库中.

我可以创建一个临时表并从SQL脚本填充它,或使用

CASE n WHEN 1 THEN x_1 WHEN 2 THEN x_2 WHEN 3 THEN x_3 ... END
Run Code Online (Sandbox Code Playgroud)

但有什么不那么麻烦吗?

sql-server sql-server-2008

4
推荐指数
1
解决办法
953
查看次数

C#'反转'DateTime列表

我有一个DateTimes列表,我需要'反转'(缺少一个更好的词)这个列表.

public class Available
{
    public Available(DateTime startDate, DateTime endDate)
    {
        if (!startDate.Day.Equals(endDate.Day))
            throw new Exception("The start and end days are not equal.");

        this.StartDate = startDate;
        this.EndDate = endDate;
    }

    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
}

List<Available> availableTimes = new List<Available>()
{
    new Available(new DateTime(2015, 3, 16, 08, 00, 00), new DateTime(2015, 3, 16, 10, 00, 00)),
    new Available(new DateTime(2015, 3, 16, 12, 00, 00), new DateTime(2015, 3, 16, 14, 00, …
Run Code Online (Sandbox Code Playgroud)

c# datetime gaps-and-islands

2
推荐指数
1
解决办法
493
查看次数