由于几个我无权谈论的原因,我们在Sql Server 2005数据库中定义了一个视图,如下所示:
CREATE VIEW [dbo].[MeterProvingStatisticsPoint]
AS
SELECT
CAST(0 AS BIGINT) AS 'RowNumber',
CAST(0 AS BIGINT) AS 'ProverTicketId',
CAST(0 AS INT) AS 'ReportNumber',
GETDATE() AS 'CompletedDateTime',
CAST(1.1 AS float) AS 'MeterFactor',
CAST(1.1 AS float) AS 'Density',
CAST(1.1 AS float) AS 'FlowRate',
CAST(1.1 AS float) AS 'Average',
CAST(1.1 AS float) AS 'StandardDeviation',
CAST(1.1 AS float) AS 'MeanPlus2XStandardDeviation',
CAST(1.1 AS float) AS 'MeanMinus2XStandardDeviation'
WHERE 0 = 1
Run Code Online (Sandbox Code Playgroud)
我们的想法是,实体框架将基于此查询创建一个实体,但它会生成一个包含以下内容的错误:
警告6002:表/视图'Keystone_Local.dbo.MeterProvingStatisticsPoint'没有定义主键.已推断密钥,并将定义创建为只读表/视图.
并且它决定CompletedDateTime字段将是此实体主键.
我们正在使用EdmGen生成模型.有没有办法不让实体框架包含此视图的任何字段作为主键?
entity-framework sql-server-2005 primary-key .net-3.5 sql-view
我正在尝试执行以下演员表
private void MyMethod(object myObject)
{
if(myObject is IEnumerable)
{
List<object> collection = (List<object>)myObject;
... do something
}
else
{
... do something
}
}
Run Code Online (Sandbox Code Playgroud)
但我总是得到以下例外:
无法转换类型为'System.Collections.Generic.List 1[MySpecificType]' to type 'System.Collections.Generic.List
1 [System.Object]'的对象
我真的需要这个工作,因为这个方法需要非常通用才能接收单个对象和两个未指定类型的集合.
这是可能的,还是有另一种方法来实现这一点.
谢谢.
从".Net中的依赖注入"一书中我知道应该在应用程序的组合根处创建对象图,这对我来说在使用IoC容器时很有意义.
在我尝试使用DI时所见到的所有应用程序中,总有两个构造函数:一个具有依赖关系作为参数的构造函数和一个没有参数的"默认"构造函数,而这些构造函数又调用另一个"newing"所有的依赖关系,但在上述书中,这被称为"混蛋注射反模式",这就是我曾经知道的"穷人的注射".
现在考虑所有这些,我会说"穷人注射"只是不使用IoC容器而是在所述组合根上手动编码所有对象图.
所以我的问题是:
谢谢
我有以下代码:
public static MyMethod()
{
...Do something
ProtectedMethod(param1, param2);
...Do something
}
protected static void ProtectedMethod(IEnumerable<string> param1, string param2, int param3 = 1)
{
... Do something
}
Run Code Online (Sandbox Code Playgroud)
注意可选的param3参数.
现在由于很多原因,我需要将MyMethod方法的代码提取到它自己的类中,但我不能用它提取ProtectedMethod,因为所有继承自这个的类都需要保持变化小而孤立.所以我想我可以在新类中使用与ProtectedMethod相同签名的Action <>委托.
问题是如果我像这样声明委托:
protected readonly Action<IEnumerable<string>, string, int> m_ProtectedMethod;
Run Code Online (Sandbox Code Playgroud)
提取的代码不喜欢它,因为它表示只使用两个参数调用该方法.
如果我像这样声明代表:
protected readonly Action<IEnumerable<string>, string> m_ProtectedMethod;
Run Code Online (Sandbox Code Playgroud)
当我将它作为参数发送到新类时,它不喜欢它,因为该方法被定义为具有三个参数而不是两个参数.
到目前为止,我想到解决这个问题的唯一方法是创建一个重载版本的ProtectedMethod来消除可选参数.
这是唯一的选择还是有另一种方法,因为现在首选的选择是使用可选参数而不是重载方法?
这必须是非常愚蠢的东西,但我想不出还有什么可做的.
使用Visual Studio 2013 - Update 1,我在现有解决方案中创建了一个空的web api 2项目,添加了跨源支持(cors)包并创建了一个基本的web api控制器.
WebApiConfig类看起来很好:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
var cors = new EnableCorsAttribute("*","*","*");
config.EnableCors(cors);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
Run Code Online (Sandbox Code Playgroud)
还有Global.asax
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
Run Code Online (Sandbox Code Playgroud)
然后我运行应用程序,IIS express正常启动,浏览器以应用程序的url启动,但似乎没有任何工作.
如果URL是"localhost:端口号",我得到 HTTP错误403.14 - 禁止Web服务器配置为不列出此目录的内容.
如果我尝试"localhost:port number/api",我会收到HTTP错误404.0 - 未找到您要查找的资源已被删除,名称已更改或暂时不可用.
我查看了几个博客,教程,示例,我还没有看到任何特殊需要做的事情.有人可以对我可能遗失的内容有所了解吗?
我想在用户使用jQuery放弃特定页面时执行一个动作方法.
该页面包含以下代码:
<script type="text/javascript">
$(window).unload(function () {
alert("Handler for .unload() was called.");
});
</script>
Run Code Online (Sandbox Code Playgroud)
当我离开页面时,我从未看到预期的警报.
我在VM上安装了SQL Server 2008,其中有三个实例:
从我的本地计算机上,我正在尝试使用Management Studio连接到这三个实例.我可以毫无问题地连接到服务器名称实例,但是当尝试连接到其他两个时,它失败并显示错误:
"建立与SQL Server的连接时发生与网络相关或特定于实例的错误.未找到服务器或无法访问服务器.验证实例名称是否正确以及SQL Server是否配置为允许远程连接"
我已经验证所有三个实例都允许远程连接,端口是所有三个端口的默认端口,所有端口都启用了TCP/IP协议,我可以使用服务器名称\实例名称格式在本地连接到所有三个.
还有什么可能阻止我连接到两个命名实例?
谢谢.
我使用Moq作为我的模拟框架,我需要测试一个类,当运行特定类型的异常时,它将继续尝试,直到执行完成后情况得到解决.
所以我需要的是类似的东西:
myMock = Mock<IFoo>();
myMock.Setup(m => m.Excecute()).Throws<SpecificException>();
myMock.Setup(m => m.Execute());
var classUnderTest = MyClass(myMock);
classUnderTest.DoSomething();
Assert.AreEqual(expected, classUnderTest.Result);
Run Code Online (Sandbox Code Playgroud)
谢谢你提供的所有帮助.
我正在尝试使用定义良好的模型为定义良好的Web API构建LINQ提供程序.我正在关注这些演练:
我已经能够创建查询提供程序,将表达式转换为所需的URL,它工作得很好.
现在这是我无法弄清楚的下一步.想象一下,其中一个请求返回一个如下定义的对象:
[JsonObject]
public class SomeObject
{
[JsonProperty(PropertyName = "id")]
public string Id {get;set;}
[JsonProperty(PropertyName = "name")]
public string Name {get;set;}
[JsonProperty(PropertyName = "is_active")]
public bool IsActive {get;set;}
public string SomeOtherObjectId {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以看到SomeOtherObjectId未使用JsonProperty属性进行修饰,这是因为它不是返回的对象定义的一部分,但它是必需的,因为它是get请求所依赖的参数.这意味着表达式如下:
Expression<Func<SomeObject, bool>> exp = o => o.SomeOtherObjectId == "someId" && o.IsActive;
Run Code Online (Sandbox Code Playgroud)
被翻译成如下:
blablabla/someId/....
现在Web API搜索受限于他们期望的参数,因此IsActive过滤器将被忽略所以我认为在收到响应之后我可以使用相同的表达式作为LINQ to Objects查询中的谓词,所以其余的过滤器是考虑到但是为了这样做,我将不得不重新创建没有ProjectId过滤器的表达式,因为它在返回的JSON中不存在被反序列化到对象中,所以它必须变成类似于:
Expression<Func<SomeObject, bool>> modifiedExp = o => o.IsActive;
Run Code Online (Sandbox Code Playgroud)
那么我可以做点什么
return deserializedObject.Where(modifiedExp);
Run Code Online (Sandbox Code Playgroud)
我一直在搜索如何使用ExpressionVisitor执行此操作的示例,但我无法理解如何在没有我想要删除的过滤器的情况下重新创建表达式.
谢谢您的帮助.
更新:
感谢Evk和MaKCbIMKo,因为他们的综合答案我得到了最终的解决方案,我希望它可以帮助其他人.
protected override Expression VisitBinary(BinaryExpression node)
{
if …
Run Code Online (Sandbox Code Playgroud) 更新:正如在问题中解释的那样,这不是重复的,因为我已经尝试在环境变量之前添加set关键字并且没有解决问题.
我正在学习节点并从书中输入示例.第一个示例涉及显示"http"模块如何工作以及如何创建服务器以侦听请求.在某些时候,本书要求将以下行添加到package.json文件的scripts部分:
"server":"SERVERPORT = 3002 node ./fiboserver"
当我尝试使用npm运行服务器运行该示例时,我收到以下错误消息:
"SERVERPORT"未被识别为内部或外部命令
我无法在互联网上找到任何答案,最多我发现我可以尝试:
"server":"设置SERVERPORT = 3002节点./fiboserver"
但这也没有帮助,唯一的区别是,我没有再次收到命令提示,而是显示服务器永远不会运行.
我相信作者使用的是Linux机器,我使用的是Windows 10笔记本电脑.
我真的致力于学习Node,我的工作是在Windows环境中.我相信在package.json上设置环境变量很重要,所以我真的可以使用一些帮助来搞清楚这一点.
谢谢.
c# ×5
oop ×2
.net ×1
.net-3.5 ×1
architecture ×1
delegates ×1
iis-express ×1
jquery ×1
linq ×1
moq ×1
node.js ×1
primary-key ×1
sql-server ×1
sql-view ×1
unit-testing ×1