我已经在我的实体框架项目上启用了代码优先迁移,并添加了一些迁移,这些迁移执行重命名表等操作.但是,我现在已经删除了数据库并导致实体框架根据我的最新数据模型生成一个全新的数据库.如果我尝试运行:
PM> Add-Migration TestMigration
Run Code Online (Sandbox Code Playgroud)
...它告诉我,我需要先应用现有的迁移.所以我跑:
PM> Update-Database
Run Code Online (Sandbox Code Playgroud)
...但问题是它正在尝试更新不需要更新的数据库; 它已经基于最新的数据模型.因此,当我尝试重命名现在不存在的表时,我收到错误.
我是否可以通过某种方式向数据迁移指出我的数据库是最新的并且不需要在其上运行任何迁移?我该怎么办?
sql-server data-migration entity-framework ef-code-first ef-migrations
我正在将一些使用旧 Twilio C# API 的代码升级到新 API,但我不知道现在发送消息后如何检查错误。我看到的所有示例都没有进行错误检查。所以旧的代码是这样的:
var attemptWithAlphanumericId = client.SendMessage(fromName, to, message);
if (attemptWithAlphanumericId.RestException == null)
{
return !string.Equals(attemptWithAlphanumericId.Status, "failed", StringComparison.OrdinalIgnoreCase);
}
if (attemptWithAlphanumericId.RestException.Status == "400"
&& attemptWithAlphanumericId.RestException.Code == "21212")
{
var attemptWithFallbackNumber = client.SendMessage(fallbackNumber, to, message);
if (attemptWithFallbackNumber.RestException == null)
{
return !string.Equals(attemptWithFallbackNumber.Status, "failed", StringComparison.OrdinalIgnoreCase);
}
throw new InvalidOperationException(attemptWithFallbackNumber.RestException.Message);
}
throw new InvalidOperationException(attemptWithAlphanumericId.RestException.Message);
Run Code Online (Sandbox Code Playgroud)
但随着我开始使用的新 API 风格:
var twilioResponseMessage = MessageResource.Create(
to: new PhoneNumber(to),
from: new PhoneNumber(_from),
body: message
);
Run Code Online (Sandbox Code Playgroud)
RestException...响应消息对象没有属性。我该如何检查 的RestException状态和代码?
我在这里错过了什么?在以下网页中,介绍了如何编写SOAP扩展类:
http://msdn.microsoft.com/en-us/magazine/cc188761.aspx
在提议的扩展类中,它开始于:
Run Code Online (Sandbox Code Playgroud)public class XmlStreamSoapExtension : SoapExtension
......只是ChainStream并且ProcessMessage已经实施.但是,如果我做类似的事情并尝试构建,我会得到3个抽象方法的构建错误:
Run Code Online (Sandbox Code Playgroud)GetInitializer(Type serviceType) GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute) Initialize(object initializer)
......尚未实施.它们是否因为简洁而被省略,或者我在这里遗漏了一些让你不必实施它们的东西?
我对如何调试我正在尝试开发的Outlook 2010插件感到困惑.我创建了一个新Extensibility | Shared Add-in项目,只是检查了Outlook,它为我创建了一个新项目,在我的Connect.cs文件中使用了Extensibility.IDTExtensibility2接口的存根实现.但是,当我按F5进行调试时,虽然项目编译正常,但Visual Studio的新实例打开而不是Microsoft Outlook!我该怎么调试我的插件?
我正在构建一个应用程序服务层,我的一个方法接受实体的ID(整数)并返回引用的实体.虽然看起来应该很简单,但是通过大量的.NET异常,我不完全确定如果找不到具有给定ID的实体我应该抛出什么异常(我不想只返回null) .
有ObjectNotFoundException,但是在System.Data命名空间中,这意味着它应该是特定于ASP.NET的,而这不是.有NullReferenceException,但是建议程序员不要因为它是"内部"而抛出它,而且我不确定它在这种情况下是否完全正确.我不想抛出通用的Exception.那么,什么特定的异常类最有意义扔到这里?由于这是一个应用服务层方法(因此非常抽象),我是否应该将自己限制在System.SystemException命名空间和/或自定义异常中的异常?
场景是:
开发人员从他们的计算机上运行 PowerShell 脚本,通过 MSBuild 将各种 Nuget 包发布到 OctopusDeploy。我们希望将当前 git 提交的哈希(Git 存储库的基础与目录相同.sln)作为生成的版本号的一部分。为此,我们可能需要提取当前提交的哈希值并将其插入到版本号字符串中,然后将其作为参数传递给 MSBuild。
那么问题是,我们如何从 MSBuild 或 Visual Studio 中获取它?不能保证开发人员会安装 Git 命令行,但他们至少会安装 VS2015 并且内置了 Git 支持,所以您认为有某种方法可以从中获取最新的 Git 提交的哈希值吗?如果您进入 Visual Studio GUI 并查看源代码管理部分,您可以看到哈希值。
是否有一些与 Visual Studio 2015 或更高版本捆绑在一起的命令行工具可以返回当前 Git 提交的哈希值?
我正在使用PowerShell脚本调用msbuild并将版本号传递给OctopusDeploy,如下所示:
msbuild "Xyz.sln" /t:Rebuild /p:Configuration=Release /p:RunOctoPack=true /p:OctopackPackageVersion=$versionNumber
Run Code Online (Sandbox Code Playgroud)
...在PS脚本中生成$ versionNumber.我想要做的是将Git提交哈希的前16个字符添加到版本字符串的末尾,这样它最终看起来像:
2.yyyyMMdd.HHmmss-git-6d34e44340f95c2a
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我可以得到msbuild或Visual Studio以某种方式返回当前的git commit hash,考虑到他们现在有内置的Git支持吗?
在 C# 中,可以轻松获得整数除法的商和模:
var quotient = 7 / 3;
var modulus = 7 % 3;
Run Code Online (Sandbox Code Playgroud)
然而,据我所知,它没有一个divmod功能可以让你同时获得这两个功能。有没有办法做到这一点?单独获取它们似乎需要进行两次除法,这是不必要的,因为处理器肯定会同时为一次除法提供两个值。
当您创建新的ASP.NET Web应用程序时,会自动设置一个名为"base"的主题,其中包含jQuery CSS和图像.这对大多数Web应用程序来说都不是过度杀伤,这些应用程序永远不需要真正使用主题吗?将所有这些内容移动到根目录内容目录中,删除主题目录,如果您无意将主题放在网站上,从不使用主题,这是一个好主意吗?
我并不是说默认情况下不应该包含jQuery,这不是我的观点.我的意思是,它应该是一个"基础"主题吗?主题是关于能够重新设置网站,我不认为许多网站会想要这样做.
然后,是Site.css什么?这是主题之外的dir,但据我所知,包含的风格信息可能实际上想要在每个主题的基础上改变(如形式样式).
我正在尝试定义一个其他类将扩展的抽象类,并且他们必须能够将自己序列化为JSON并从JSON反序列化.我想写这样的抽象类:
public abstract class BaseApiModel {
public abstract string ToJson();
public abstract T FromJson(string json);
}
Run Code Online (Sandbox Code Playgroud)
... T当前类的类型在哪里.然后我会写一个像这样的扩展类:
public class ContactApiModel : BaseApiModel {
public string ContactName { get; set; }
[...other properties...]
public override string ToJson() {
[...return serialized JSON string...]
}
public override ContactApiModel FromJson(string json) {
[...return deserialized object...]
}
}
Run Code Online (Sandbox Code Playgroud)
当然这不起作用,因为T在抽象类中没有定义.但是有什么方法可以写"这个方法必须在C#中返回当前类的类型"吗?我只是要让它回来object吗?或者我是否接近这个错误,并且有更好的方法来构建它?