小编Mat*_*att的帖子

LINQ to SQL可以查询XML字段DB-serverside吗?

.NET 3.5,C#

我有一个带有"搜索"功能的网络应用程序.可搜索的一些字段是表中的第一类列,但其中一些实际上是XML数据类型中的嵌套字段.

以前,我构建了一个系统,用于为我的搜索动态构建SQL.我有一个很好的类层次结构,它构建了SQL表达式和条件语句.唯一的问题是SQL注入攻击不安全.

我正在阅读Rob Conery的优秀文章,该文章指出,如果永远不会枚举IQueryable结果,那么多个查询可以合并到服务器的单个TSQL查询中.这让我觉得我的动态搜索结构太复杂了 - 我只需要组合多个LINQ表达式.

例如(人为):

Author:
    ID (int),
    LastName (varchar(32)), 
    FirstName (varchar(32))

    context.Author.Where(xx => xx.LastName == "Smith").Where(xx => xx.FirstName == "John")
Run Code Online (Sandbox Code Playgroud)

结果在以下查询中:

SELECT [t0].[ID], [t0].[LastName], [t0].[FirstName]
FROM [dbo].[Author] AS [t0]
WHERE ([t0].[LastName] = Smith) AND ([t0].[FirstName] = John)
Run Code Online (Sandbox Code Playgroud)

我意识到这可能是一个简单的动态查询生成的完美解决方案,可以安全地从SQL注入 - 我只是循环我的IQueryable结果并执行其他条件表达式来获得我的最终单执行表达式.

但是,我找不到对XML数据评估的任何支持.在TSQL中,为了从XML节点获取值,我们会做类似的事情

XMLField.value('(*:Root/*:CreatedAt)[1]', 'datetime') = getdate() 
Run Code Online (Sandbox Code Playgroud)

但我找不到LINQ to SQL等同于创建此评估.有人存在吗?我知道我可以评估所有非XML条件的DB端,然后进行我的XML评估代码方面,但我的数据足够大,A)这是很多网络流量拖累性能和B)我会退出 - 如果我无法评估XML第一个DB端以排除某些结果集,则会出现内存异常.

想法?建议?

奖金问题 - 如果XML评估实际上是可能的DB方面,那么FLWOR支持呢?

xml sql .net-3.5 linq-to-sql

28
推荐指数
1
解决办法
1万
查看次数

Select*和Select [list each col]之间是否有区别

我正在使用MS SQL Server 2005.与SQL引擎之间有区别

SELECT * FROM MyTable;
Run Code Online (Sandbox Code Playgroud)

SELECT ColA, ColB, ColC FROM MyTable;
Run Code Online (Sandbox Code Playgroud)

当ColA,ColB和ColC代表表格中的每一列时?

如果它们是相同的,那么为什么你应该使用第二个呢?我有一个对LINQ很重的项目,我不确定它生成的标准SELECT*是不是很糟糕,或者我应该总是使用.Select()来指定我想要的cols.

编辑:更改"当ColA,ColB和ColC是表格的所有列?" "当ColA,ColB和ColC代表表格中的每一列?" 为清楚起见.

sql linq database linq-to-sql

25
推荐指数
6
解决办法
6649
查看次数

您可以搜索SQL Server 2005存储过程内容吗?

SQL Server Server 2005.我正盯着一个拥有500多个存储过程的数据库,并试图收集它们如何与数据交互的复杂性 - 特别是关于它们如何插入/修改数据.我希望找到一个搜索"或"找到"查看实际过程内容的功能.这样,我可以搜索所有使用some_table_name执行任何操作的过程.SQL Management的基本查找功能Studio查看已打开的文件,如果我已经打开了sproc,则只在查找文件中查找内容,即使只有在...\Local Settings\Temp\~vs1011.sql临时类型文件中也是如此.

截至目前,我知道进入底层程序的唯一方法是右键单击并选择"修改"(或脚本存储过程为=>创建或更改).是否有更快/更简单的方法来搜索/检查所有的sprocs?

sql-server sql-server-2005

25
推荐指数
3
解决办法
2万
查看次数

在SqlParameter中使用DateTime存储过程,格式错误

我正在尝试从C#,.NET 2.0调用存储过程(在SQL 2005服务器上)DateTime作为a的值SqlParameter.存储过程中的SQL类型是"datetime".

从SQL Management Studio执行sproc工作正常.但是每当我从C#调用它时,我都会收到有关日期格式的错误.

当我运行SQL事件探查器来监视调用时,我会复制粘贴exec调用以查看正在发生的事情.这些是我对我尝试过的观察和注意事项:

1)如果我DateTime直接作为a DateTime或转换为传入SqlDateTime,则该字段由单引号的PAIR包围,例如

@Date_Of_Birth=N''1/8/2009 8:06:17 PM''
Run Code Online (Sandbox Code Playgroud)

2)如果我将DateTimein作为字符串传递,我只得到单引号

3)使用SqlDateTime.ToSqlString()不会产生UTC格式的日期时间字符串(即使转换为通用时间后)

4)使用DateTime.ToString()不会产生UTC格式的日期时间字符串.

5)手动设置DbTypeSqlParameterto DateTime不会改变上述观察结果.

那么,我的问题是,我是如何让C#通过正确格式化的时间SqlParameter?当然这是一个常见的用例,为什么这么难以开始工作?我似乎无法转换DateTime为SQL兼容的字符串(例如'2009-01-08T08:22:45')

编辑

RE:BFree,实际执行sproc的代码如下:

using (SqlCommand sprocCommand = new SqlCommand(sprocName))
{
    sprocCommand.Connection = transaction.Connection;
    sprocCommand.Transaction = transaction;
    sprocCommand.CommandType = System.Data.CommandType.StoredProcedure;
    sprocCommand.Parameters.AddRange(parameters.ToArray());
    sprocCommand.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

详细了解我的尝试:

parameters.Add(new SqlParameter("@Date_Of_Birth", DOB));

parameters.Add(new SqlParameter("@Date_Of_Birth", DOB.ToUniversalTime()));

parameters.Add(new SqlParameter("@Date_Of_Birth", 
    DOB.ToUniversalTime().ToString()));

SqlParameter param = new SqlParameter("@Date_Of_Birth", …
Run Code Online (Sandbox Code Playgroud)

c# sql-server datetime stored-procedures .net-2.0

23
推荐指数
1
解决办法
14万
查看次数

通过索引jQuery查找子项

jQuery可以返回最后一个或第一个孩子,它可以正常工作.

但我需要得到第二个孩子.

获取其文本时,此构造(通过索引获取子项)不起作用:

child.parent().parent().children().get(1).text()
Run Code Online (Sandbox Code Playgroud)

那么,我怎样才能找到非最后和非第一个孩子(例如第二个)?

jquery dom

22
推荐指数
2
解决办法
3万
查看次数

如果删除DOM元素,那么以该元素开头的任何事件都会继续冒泡吗?

如果我删除用于启动事件气泡的DOM元素,或者其子项启动事件气泡,我应该期待什么行为?如果元素被删除,它会继续冒泡吗?

例如 - 假设您有一个表,并希望检测表格单元格上的单击事件.JS的另一部分执行了一个AJAX请求,一旦请求完成,它将最终完全替换表.

如果我单击表格会立即在表格被成功完成AJAX请求取代后会发生什么?我问,因为我看到一些行为,其中点击事件似乎没有冒泡 - 但很难复制.

我正在观看桌子的父元素上的事件(而不是将事件附加到每个TD),并且它有时似乎没有达到它.

编辑:再次遇到这个问题,最后得到了它的根源.根本不是一个冒泡的问题!请参阅下面的答案了解详情.

javascript dom javascript-events event-bubbling

19
推荐指数
3
解决办法
4488
查看次数

为什么不把一切都变成"虚拟"?

可能重复:
为什么C#默认将方法实现为非虚方式?

我主要讲的是C#,.NET 3.5,但总体上想知道不考虑所有"虚拟"的好处是什么 - 也就是说在子类实例中调用的方法总是执行最多的子版本那种方法.在C#中,如果父方法未使用"虚拟"修饰符标记,则情况并非如此.例:

public class Parent
{
    public void NonVirtual() { Console.WriteLine("Non-Virtual Parent"); }
    public virtual void Virtual(){ Console.WriteLine("Virtual Parent"); }
}

public class Child : Parent
{
    public new void NonVirtual() { Console.WriteLine("Non-Virtual Child"); }
    public override void Virtual() { Console.WriteLine("Virtual Child"); }
}

public class Program
{
    public static void Main(string[] args)
    {
        Child child = new Child();
        Parent parent = new Child();
        var anon = new Child();

        child.NonVirtual();           // => Child
        parent.NonVirtual();          // => …
Run Code Online (Sandbox Code Playgroud)

.net c# virtual overriding

18
推荐指数
2
解决办法
9633
查看次数

ASP.NET MVC强类型部分视图,给出无法加载类型错误

我正在尝试使用Html.RenderPartial()呈现带有"MVC View User Control"的强类型视图.我的ascx文件的顶部如下所示:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.Collections.IEnumerable<string>>" %>
Run Code Online (Sandbox Code Playgroud)

目前,此页面上没有其他内容.

当我执行应用程序并加载呈现此控件的页面时,我收到以下错误:

 Could not load type 'System.Web.Mvc.ViewUserControl<System.Collections.IEnumerable<string>>'.
Run Code Online (Sandbox Code Playgroud)

那么,我简化了它:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %>
Run Code Online (Sandbox Code Playgroud)

然后,以防万一需要完全合格:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.String>" %>
Run Code Online (Sandbox Code Playgroud)

每次我得到相同的错误(替换类型).我在这做错了什么?我在.NET 3.5上使用ASP.NET MVC 1.0 RTM.

asp.net-mvc partial-views .net-3.5 strongly-typed-view

17
推荐指数
1
解决办法
6548
查看次数

我认为允许跨子域AJAX请求,但这个Chrome错误似乎表明不是这样

我知道出于安全原因不允许跨域请求,但我的印象是只有顶级域名需要匹配,不同的子域名都可以.但是,我从Chrome 7收到此错误:

"不安全的JavaScript尝试与URL访问框架http://foo.somedomain.com/dir/page.html从框架与URL http://bar.somedomain.com/otherdir/otherpage.html.域,协议和端口必须比赛"

这些类型的请求的具体规则是什么?

ajax cross-domain

16
推荐指数
2
解决办法
1万
查看次数

用于检测JavaScript是否作为WebWorker执行的任何标准机制?

WebWorker使用与传统JavaScript的"窗口"上下文完全分离的范围执行.是否有一种标准方法可以让脚本确定它本身是作为WebWorker执行的?

我能想到的第一个"黑客"是检测工人范围内是否存在"窗口"属性.如果不存在,这可能意味着我们正在作为WebWorker执行.

其他选项是检测标准"窗口"上下文中不存在的属性.对于Chrome 14,此列表目前包括:

FileReaderSync
FileException
WorkerLocation
importScripts
openDatabaseSync
webkitRequestFileSystemSync
webkitResolveLocalFileSystemSyncURL
Run Code Online (Sandbox Code Playgroud)

检测WorkerLocation似乎是一个可行的候选人,但这仍然感觉有点hackish.有没有更好的办法?

编辑:是我用来确定执行WebWorker中现在位于"窗口"中的属性的JSFiddle.

javascript html5 web-worker

15
推荐指数
2
解决办法
2177
查看次数