草庐IT

动态sql

全部标签

c# - 从字符串源列表动态生成最短正则表达式

我有一堆代表一系列字符串的SKU(库存单位),我想创建一个正则表达式来匹配它们。例如,如果我有SKU:varskus=new[]{"BATPAG003","BATTWLP03","BATTWLP04","BATTWSP04","SPIFATB01"};...我想自动生成正则表达式以识别任何一个SKU。我知道我可以简单地做"BATPAG003|BATTWLP03|BATTWLP04|BATTWSP04|SPIFATB01",但是SKU列表可能会很长,我想压缩生成的Regex以查看像“BAT(PAG003|TW(LP0(3|4)|SP04))|SPIFATB01”所以这是一个组合数学练习。

c# - Entity Framework 中是否有一个函数可以转换为 SQL 中的 RANK() 函数?

假设我想按国家/地区对我的客户数据库进行排名。在SQL中我会写:selectCountryID,CustomerCount=count(*),[Rank]=RANK()over(orderbycount(*)desc)fromCustomer现在我想在EntityFramework中写这个:varranks=db.Customers.GroupBy(c=>c.CountryID).OrderByDescending(g=>g.Count()).Select((g,index)=>new{CountryID=g.Key,CustomerCount=g.Count,Rank=index+1

c# - 动态设置 C# 匿名类型的属性名称

有没有办法动态设置匿名类型的属性名?通常我们会这样做:varanon=new{name="Kayes"};现在我想动态设置属性的名称(或标识符),以便该名称可以来自XML文件或数据库。谢谢大家的回答。不,我的需要绝对不值得所有繁琐的选择。我只是想让我的代码符合我的团队领导开发的现有库。但我们决定更新库以支持字典类型,以便轻松解决。Pete,我很高兴了解.NET4.0中的动态类型谢谢。 最佳答案 这是不可能的,因为即使类型是匿名的,它也不是动态类型。它仍然是静态类型,并且必须在编译时知道有关它的属性。您可能想查看.NET4.0“dyn

c# - 为什么动态调用返回动态结果?

publicstringFoo(objectobj){returnnull;}publicstringFoo(stringstr){returnnull;}varx=Foo((dynamic)"abc");为什么x是动态的,编译器不够智能或者我错过了一些重要的东西? 最佳答案 我只是猜测,但是...当您向dynamic添加强制转换时,整个表达式将变为动态表达式。动态表达式的结果总是动态的,因为一切都在运行时解决。查看有关使用dynamic的MSDN页面以获取更多信息:UsingTypedynamic(C#ProgrammingGui

c# - 如何使用 Sql CE 4 数据库进行功能测试

由于Linq-to-Entities(EF4)和Linq-to-Objects之间的潜在差异,我需要使用实际的数据库来确保我的查询类正确地从EF检索数据。SqlCE4似乎是完美的工具,但是我遇到了一些小问题。这些测试使用的是MsTest。我遇到的问题是,如果数据库没有被重新创建(由于模型更改),数据会在每次测试后不断添加到数据库中,而不会删除数据。这可能会导致测试冲突,查询返回的数据多于预期。我的第一个想法是在TestInitialize方法中初始化一个TransactionScope,并在TestCleanup中处理事务。不幸的是,SqlCE4不支持事务。我的下一个想法是通过File

c# - 从 C# DLL 动态获取代码

我想看看DLL(可能在不同机器上编译)是否相同。为此,我正在做的是加载DLL并计算MD5,这因DLL在不同机器上失败(但具有相同的源)而失败。这似乎是由于在编译时添加了其他元数据(正如有人提到的here)。我想对整个DLL进行逆向工程,看看代码是否匹配,但是,我有两个问题:我只能找到执行此操作的工具,我似乎找不到C#库或类似的东西来满足我的需要。我不能100%确定反编译的源代码在不同机器上编译的源代码是否相同。如有任何提示、提示和指点,我们将不胜感激。 最佳答案 您可能是对的-它可能是元数据。不过,我认为这不一定是最有可能的可能性。

c# - SQL Server 管理对象 (SMO) 的默认约束不一致

我有一个程序可以使用SQLServer管理对象(SMO)为MicrosoftSQLServer数据库生成DDL脚本。但是,根据服务器和数据库,我收到表的默认约束输出不一致。有时它们与CREATETABLE语句内联,有时它们是独立的ALTERTABLE语句。我意识到两者都是有效且正确的SQL语句,但如果没有一致性,它会阻止多个数据库的输出之间的自动比较,并阻止将输出添加到源代码管理以跟踪数据库模式的更改。如何确保默认约束的脚本输出的一致性?示例程序代码应该简单明了。打开服务器和数据库,然后为每个数据库对象生成单独的脚本文件,再加上一个包含整个数据库脚本的文件。我省略了很多似乎已经生成一致

c# - 如何将数据从 Sql 对象复制到 C# 模型属性

我有两个表:员工:Id、姓名、DepartmentId部门:Id,姓名员工.cs:publicintId{get;set;}publicstringName{get;set;}publicintDepartmentId{get;set;}部门.cs:publicintId{get;set;}publicstringName{get;set;}View模型:EmployeeDepartmentVM:publicDepartmentdepartment{get;set;}publicListemployees{get;set;}为了连接这两个表,我编写了这段代码:SELECTE.*,D.I

c# - SQL Server 将 SP_EXECUTESQL 识别为对象而不是过程名称

我正在使用DBContext.Database.SqlQuery从我的C#代码存储库执行存储过程。它工作正常,但我想知道为什么它会执行如下程序:execsp_executesqlN'EXECGetCaseList@CaseStage',N'@CaseStageint',@CaseStage=9而不是EXECGetCaseList@CaseStage=9有什么方法可以像这样从C#执行我的所有过程EXECGetCaseList@CaseStage=9而不是execsp_executesqlN'EXECGetCaseList@CaseStage',N'@CaseStageint',@Case

c# - 将在 C# 中创建的哈希与 sql 匹配

我有一个用于生成散列的方法:publicstaticstringGetMD5Hash(stringinput){System.Security.Cryptography.MD5CryptoServiceProviderx=newSystem.Security.Cryptography.MD5CryptoServiceProvider();byte[]bs=System.Text.Encoding.UTF8.GetBytes(input);bs=x.ComputeHash(bs);System.Text.StringBuilders=newSystem.Text.StringBuilde