我正在为WinForms应用程序编写查询管理器,除其他外,它需要能够在用户输入查询时向用户提供实时搜索结果(想想Google的实时结果,尽管很明显在厚客户端环境而不是Web).由于结果需要在用户输入时开始到达,搜索将变得越来越具体,所以我希望能够在用户输入更具体的信息时仍然执行时取消查询(因为结果会无论如何,只是被丢弃).
如果这是普通的ADO.NET,我显然可以使用该DbCommand.Cancel函数并完成它,但我们使用EF4进行数据访问,并且似乎没有明显的方法来取消查询.另外,在Reflector中打开System.Data.Entity并查看EntityCommand.Cancel显示一个令人沮丧的空方法体,尽管文档声称调用它会将其传递给提供者命令的相应Cancel函数.
我已经考虑过简单地让现有的查询运行并启动一个新的上下文来执行新的搜索(一旦完成就处理现有的查询),但我不喜欢单个客户端有多个开放的想法当我只对最近的结果感兴趣时,运行并行查询的数据库连接.
所有这一切都让我相信,一旦将EF查询分派到数据库中就没有办法取消EF查询,但是我希望这里的某个人能够指出我忽略的东西.
TL/DR版本:是否可以取消当前正在执行的EF4查询?
我试图准确理解Windows Azure中的AppFabric,与工作者角色和Web角色有什么区别以及如何在Visual Studio 2010中创建AppFaric项目,我的意思是哪种项目?
谢谢.
我对GIT来说是全新的,所以原谅天真.如果我正在离线工作,并且我做了多次提交,那么在我重新上线后推送更改,是否所有提交都会显示在我的存储库中,或者只是我在返回网络之前所做的最后一次提交?
为了放弃阅读整个问题,我的基本问题是:
PostgreSQL中是否有一个函数来转义字符串中的正则表达式字符?
我已经探测过文档,但无法找到这样的功能.
这是完整的问题:
在PostgreSQL数据库中,我有一个包含唯一名称的列.我还有一个定期在此字段中插入名称的进程,并且为了防止重复,如果需要输入已存在的名称,它会在末尾附加一个空格和括号.
即姓名,姓名(1),姓名(2),姓名(3)等
就目前而言,我使用以下代码来查找要在系列中添加的下一个数字(用plpgsql编写):
var_name_id := 1;
SELECT CAST(substring(a.name from E'\\((\\d+)\\)$') AS int)
INTO var_last_name_id
FROM my_table.names a
WHERE a.name LIKE var_name || ' (%)'
ORDER BY CAST(substring(a.name from E'\\((\\d+)\\)$') AS int) DESC
LIMIT 1;
IF var_last_name_id IS NOT NULL THEN
var_name_id = var_last_name_id + 1;
END IF;
var_new_name := var_name || ' (' || var_name_id || ')';
Run Code Online (Sandbox Code Playgroud)
(var_name包含我试图插入的名称.)
这暂时有效,但问题出在WHERE声明中:
WHERE a.name LIKE var_name || ' (%)'
Run Code Online (Sandbox Code Playgroud)
此检查不会验证有%问题的数字,并且它不会考虑多个括号,如"Name((1))",如果存在任何一种情况,则会抛出强制转换异常.
该WHERE声明确实需要像更多的东西: …
是否有可能写一个#define定义了#define?
例如:
#define FID_STRS(x) #x
#define FID_STRE(x) FID_STRS(x)
#define FID_DECL(n, v) static int FIDN_##n = v;static const char *FIDS_##n = FID_STRE(v)
Run Code Online (Sandbox Code Playgroud)
但反而:
#define FID_DECL2(n, v) #define FIDN_##n v \
FIDS_##n FID_STRE(v)
Run Code Online (Sandbox Code Playgroud)
FID_DECL工作正常,但创建两个静态变量.是否有可能做出FID_DECL2工作并定义两个定义?
我已经创建了一个通用函数,如下所示(仅作为证明),它将采用一个List<T>集合并将其反转,返回一个新List<T>的输出.
public static List<T> ReverseList<T>(List<T> sourceList)
{
T[] outputArray = new T[sourceList.Count];
sourceList.CopyTo(outputArray);
return outputArray.Reverse().ToList();
}
Run Code Online (Sandbox Code Playgroud)
证明的目的是我只知道T运行时的内容.因此我使用反射来调用上面的方法如下:
List<int> myList = new List<int>() { 1, 2, 3, 4, 5 }; // As an example, but could be any type for T
MethodInfo myMethod = this.GetType().GetMethod("ReverseList");
MethodInfo resultMethod = myMethod.MakeGenericMethod(new Type[] { typeof(int) });
object result = resultMethod.Invoke(null, new object[] { myList });
Run Code Online (Sandbox Code Playgroud)
这里有两个问题:
typeof(int),我希望提供类似于somthign myList.GetType().GetGenericArguments()[0].GetType(),以使事情更灵活,因为我T直到运行时才知道.当Invoke运行时,执行此操作会导致运行时错误,如下所示:"System.Collections.Generic.List'1 [System.Int32]类型的对象'无法转换为类型'System.Collections.Generic.List'1 [ System.RuntimeType]"."Invoke() …我是Java世界的新手。我有一个简单的查询问题:
<insert id="create" parameterType="models.entities.CategoryEntity">
set @catId := (select categoryId from Categories limit 1);
insert into Categories(CategoryId, Title, LeftValue, RightValue)
values(@catId, 'Test in', 1,2);
....
</insert>
Run Code Online (Sandbox Code Playgroud)
当我尝试使用mybatis运行它时,它只是失败了:
PersistenceException occured : ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insert into Categories(CategoryId, Title, LeftValue, RightValue) values(' at line 2 ### The error may involve Category.create-Inline ### The error occurred …Run Code Online (Sandbox Code Playgroud) //overloading operator ==
class Point
{
private int m_X,int m_Y;
public static operator == (Point p1 ,Point p2)
{
if(object.ReferenceEquals(p1,p2)
return true;
if((object)(p1) == null) || ((object)(p2) ==null)
return false;
return( (p1.x == p2.x) && (p1.x == p2.x));
}
//overloading the != operator
}
Run Code Online (Sandbox Code Playgroud)
如何在Java中读取文件到字节?
重要的是要注意所有字节都需要是正的,即不能使用负范围.
这可以用Java完成,如果可以,怎么做?
我需要能够将文件的内容乘以常量.我假设我可以将字节读入BigInteger然后相乘,但是因为一些字节是负数,所以最终得到12 13 15 -12等并且卡住了.