我有一个这样的课:
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]在Name和Name2属性上放置数据注释,那么一切正常,如果Name或Name2为空,验证将引发错误.
但我希望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)
但我知道我不能,它会导致错误.我该怎么做才能满足这个要求?
我的Visual Studio有一个非常奇怪的问题.我经常按CTRL+ S经常(称我为偏执狂,但是几年前我养成了这个习惯,我真的不想摆脱它:-))
现在我遇到的问题是我正在编辑一个文件,根据我在Word中打开的规范更改了几十个字符串; 所以我经常切换这两个任务,进行一两次更改,然后保存.
奇怪的是,每隔一段时间,保存后,我的文件突然处于只读模式,所以我无法浏览我的更改(CTRL+ Z/ CTRL+ Y)并且必须重新打开该文件才能继续编码和祈祷.事实上,当发生这种情况时,我觉得随意:
有时我只改变1个东西并保存,然后它立即只读,在其他情况下,它会让我编辑几个东西,直到它被卡住.
其他人也经历过这个并且可能得到了提示?也许我点了一些神奇的热键或什么?
我对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配置中或其他地方完成吗?
在此先感谢您的帮助!
我的时代,他们正在改变,也就是说,因为我需要他们.我正在测试一些涉及我使用的调度程序的情况,这涉及到夏令时之间转换的行为.
从这篇文章我得到了一个工作方法,使我能够以编程方式更改系统日期(重新发布大部分代码):
[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) 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的事情.目前,我正在使用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创建的生成的目标文件中)
但是我真的不喜欢这个,不得不将这个附加值插入到可能需要它的每个项目中; 特别是因为我不知道我首先需要这个调整.昨天它工作,我没有将这个额外的行插入任何项目或目标文件.
所以我希望也许有人知道额外的开关,技巧或设置,这可能会对它的工作方式产生额外的影响.
我试图从多个表中获取数据,但不知道如何做到这一点.下面是我正在使用的查询,但它不起作用.请建议.
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) 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) 如果以前没有问过这件事我会感到惊讶,但是我找不到任何东西.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)
但有什么不那么麻烦吗?
我有一个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)