Tag: executequery

C#ExecuteQuery null值

我有一些代码: using (OAZISDBDataContext ctx = new OAZISDBDataContext()) { IEnumerable details = ctx.ExecuteQuery(“exec [dbo].[zna_contact] {0}, {1}”, “test”, “19601023”, } 但是,我还希望能够将空值传递给存储过程,因此它不会使用它们。 现在使用字符串这很容易,我可以传递String.Empty,它会工作。 但是,如果我想传递空日期,这是一个问题。 我显然试过了: using (OAZISDBDataContext ctx = new OAZISDBDataContext()) { IEnumerable details = ctx.ExecuteQuery(“exec [dbo].[zna_contact] {0}, {1}”, “test”, null, } 但这不起作用,给出错误: System.Exception:queryparameter不能是System.Object类型。 经过一些阅读后,我发现ExecuteCommand不支持null参数,而规范断言它应该。 有没有人遇到过这个问题并找到了解决方法? 谢谢你们

如何使用DataContext.ExecuteQuery返回的未知类型的对象

因此,随着C#4.0中dynamic关键字的出现,我希望我能找到一个更好的解决方案来解决在选择任意列时处理DataContext.ExecuteQuery返回的类型的问题。 在过去,我创建了一个新类型来保存此类查询的结果,或者使用此SOpost中描述的方法。 所以,既然我能够处理在.NET 4.0下运行的新项目,我就开始尝试使用动态类型以一种不太痛苦的方式完成同样的事情。 所以,我给了这个镜头: var result = _db.ExecuteQuery( “SELECT CustomerID,City FROM Customers”, new object[0] ); foreach( var d in result ) { MessageBox.Show( String.Format( “{0}, {1}”, d.CustomerID, d.City ) ); } 在运行时抛出exception,因为动态对象的属性CustomerID不存在。 所以,由于我在这一点上对动态关键字的体验是零(文章/博客文章或两篇,没有真正的经验),我希望有人在这里可以让我知道我在这里尝试做什么甚至是可能的。 我可能高估了ExecuteQuery背后的“魔法”数量,但我认为这可能是由于在幕后完成的属性映射。 任何帮助深表感谢。