小编gos*_*iwi的帖子

从IDbConnection实例实例化IDataAdapter

我有一个IDbConnection的实例,可以是任何连接,Sql,OleDb等.我想制作一个通用的包装器,所以我可以发送包装器一个连接,并获得一组很好的方法,以便于操作.我有一个Query方法,我希望它返回一个DataTable,所以我可以做

IDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = myCommand;
DataSet ds = new DataSet();
adapter.Fill(ds);
Run Code Online (Sandbox Code Playgroud)

问题是我必须使用OleDbAdapter,它不适用于SQL,我真的不想写"特定于驱动程序"的代码.有没有办法从我的实例化IDbConnection对象中获取IDataAdapter实例?我知道我可以创建一个命令

IDbCommand command = _connection.CreateCommand();
Run Code Online (Sandbox Code Playgroud)

认为必须有一些简单的方法来对IDataAdapter做同样的事情是合乎逻辑的.

编辑:

using (var reader = command.ExecuteReader())
{
    var dataTable = new DataTable();
    dataTable.Load(reader);
}
Run Code Online (Sandbox Code Playgroud)

那不是我要求的,而是一个很好的解决方案.

c#

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

EF 4.1 Code First - 添加列

我有我的数据库已经建立,我想一个新的字段添加到模型中,一个新列的表,是有办法,我可以做到这一点,而不会失去我的所有数据?通常,如果删除数据库,它将自动重新创建所有内容,但我不想丢失数据.我正在使用SQL Server 2008作为数据库.

c# entity-framework-4.1

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

在没有左手递归的情况下解析布尔表达式

我想要匹配这个

f(some_thing) == 'something else'
Run Code Online (Sandbox Code Playgroud)
  • f(some_thing)是一个函数调用,它是一个表达式
  • ==是一个布尔运算符
  • 'something else'是一个字符串,也是一个表达式

所以布尔表达式应该是

expression operator expression
Run Code Online (Sandbox Code Playgroud)

问题是我无法弄清楚如何在不离开递归的情况下做到这一点这些是我的规则

expression 
  = 
  bool_expression
  / function_call
  / string
  / real_number
  / integer
  / identifier

bool_expression
  = l:expression space* op:bool_operator space* r:expression 
  { return ... }
Run Code Online (Sandbox Code Playgroud)

使用语法符号,我有

O := ==|<=|>=|<|>|!=  // operators
E := B|....           // expression, many non terminals
B := EOE
Run Code Online (Sandbox Code Playgroud)

因为我的语法是EOE,我不知道如何使用左手算法

A := Ab|B
transforms into
A := BA'
A':= e|bA
Run Code Online (Sandbox Code Playgroud)

其中e为空,b为终端

grammar parsing peg pegjs

7
推荐指数
1
解决办法
893
查看次数

一个简单的lambda演算解析器与FParsec

我是F#的新手并且有一个非常讨厌的问题.我想解析以下语法:

Application := Expression Expression
Expression  := "(" "lambda" Name "." Application ")"
             | Name
Name        := [a-z]+
Run Code Online (Sandbox Code Playgroud)

这将匹配像(lambda x. (lambda y. x y)) z和的东西(lambda x. x) y.

我的问题是两个规则相互依赖:

let popen = pchar '('
let pclose = pchar ')'
let pname = many1 letter |>> Seq.toArray |>> System.String |>> NameNode
let plambda = pstring "lambda"
let pdot = pchar '.'
let phead = plambda >>. pname .>> pdot
let pexpression = 
        popen >>. pname .>>. papplication …
Run Code Online (Sandbox Code Playgroud)

lambda f# fparsec

7
推荐指数
1
解决办法
99
查看次数

从View获取当前用户

所以我想要做的是,在我的主要布局中,有一个登录用户的菜单,以及一个不同的匿名用户.

布局将在每个页面上使用,所以我不知道如何做到这一点,正如我所见,Auth组件只能在控制器中使用,如果我只需要在一个控件中执行此操作,这将是很好的查看,但对于每个视图,我该怎么做?我必须在AppController上做点什么吗?

我想做的基本上是

// layout
<?php if(logged): ?>
Welcome <?php echo $user; ?>
<?php else: ?>
Welcom anon, Log in?
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)

php cakephp cakephp-2.0

6
推荐指数
1
解决办法
4708
查看次数

构建SQL来自委托的查询位置

我正在处理一个小帮手,用于添加,编辑和从数据库中删除对象,add方法现在正在工作,给定一个类型为t的对象,它检查属性,值,并生成一个SQL查询以插入数据到表中(它假设表名是对象的类型,但也可以手动设置)

我现在想做的是一种方法

public bool Update<T>(T obj, Func<T, bool> predicate)
Run Code Online (Sandbox Code Playgroud)

因此给定一个T obj和一个lambda函数谓词,如果谓词是

(o => o.Id = 1)
Run Code Online (Sandbox Code Playgroud)

我想生成

WHERE Id = 1
Run Code Online (Sandbox Code Playgroud)

我已经看到了一些类似的问题,我认为表达式树可能是一个很好的起点,但我所看到的只是如何手动创建表达式,而不是如何从委托创建表达式.

有没有办法从委托生成SQL?

编辑:我终于可以做我想做的事了,我在这里发了一篇关于它的帖子.

c# linq expression-trees

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

php-fpm不会加载php.ini设置

我正在使用nginx和php-fpm。

我的phpinfo页面说php从/etc/php5/fpm/php.ini加载php.ini文件,我尝试更新该文件然后运行

sudo service php-fpm reload
Run Code Online (Sandbox Code Playgroud)

但是php仍然使用旧的设置,phpinfo显示旧的值,好像我没有进行任何修改。

我尝试重新启动php-fpm甚至重新启动计算机,但是它仍然无法正常工作,它只是不会加载新的php.ini值...

php nginx

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

索引:我的索引是否太多?

我有一系列课程,其中包含具有以下架构的文档

{
    title: "Programming 101",
    category: 1
    likes: 10,
    author: {
        name: "Mike",
        reputation: 100,
        rating: 1500
    },
    created: 154895126, // unix timestamp
    content: ".... html ... "
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序的索引页中,我显示了所有类别的最新 18 节课程,所以这是

db.lessons.find().sort({created:-1}).limit(18)
Run Code Online (Sandbox Code Playgroud)

由于这是一个非常常见的查询,并且课程集合将是我在系统中最大的集合,我想尽可能地优化它,所以我在创建的索引上创建了索引

db.lessons.ensureIndex({created:-1})
Run Code Online (Sandbox Code Playgroud)

但有时我只想从某一类别中吸取教训

db.lessons.find({category:1}).sort({created:-1}).limit(18)
Run Code Online (Sandbox Code Playgroud)

所以我还在category中添加了一个索引,因为如果我不这样做,mongo可以轻松排序,但它仍然需要逐个元素检查以获得category = 1的索引,所以

db.lessons.ensureIndex({category:1})
Run Code Online (Sandbox Code Playgroud)

因为我不按类别排序,所以我只传递 1,表示升序。

现在的问题是我还想按喜欢、作者声誉和作者评级对课程进行排序,这些将是非常常见的任务,不像按创建排序那么常见,但仍然很常见,我应该再添加 3 个索引吗?或者只使用创建的一个?

db.lessons.ensureIndex({likes:-1})
db.lessons.ensureIndex({'author.reputation':-1})
db.lessons.ensureIndex({'author.rating':-1})
Run Code Online (Sandbox Code Playgroud)

我觉得我可能使用了太多索引,并且内存中的集合大小可能很大。

mongodb

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

重新映射键并获取用户输入

所以我发现这样做

:%s//my new string/g
Run Code Online (Sandbox Code Playgroud)

我可以替换当前搜索到的所有文本

Hello, world! la la la Hello.
Run Code Online (Sandbox Code Playgroud)

因此,如果我踩到“Hello”,按 *,然后执行 :%s//Bye/g,我可以将所有“Hello”更改为“Bye”。

我只想做一个小的重新映射来为我做到这一点,我是 vim 新手,所以这对我来说非常困难,我真的不知道如何获取用户输入以进行重新映射。

一位 Reddit 用户推荐了我

nnoremap <c-n> :%s///g<left><left>
Run Code Online (Sandbox Code Playgroud)

所以我可以用来触发替换,但它不起作用,我猜是因为它没有在任何地方指定输入?我想做

<c-n> SOME NEW TEXT <enter>
Run Code Online (Sandbox Code Playgroud)

并用一些新文本替换所有问候语

这可能吗?

vim

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

SQL Server 2008:通用转换为日期

我的查询中有一点问题.我的本地开发服务器上的数据库使用法语日期格式(dd/mm/yyyy)运行,但我的发布服务器是北美格式(mm/dd/yyyy).

所以这会引发错误

SELECT CodPeriodoInsc, 
       CONVERT(VARCHAR, FechaDesde, 103) AS FechaDesde, 
       CONVERT(VARCHAR, FechaHasta, 103) AS FechaHasta 
FROM SedesPeriodosInscripcion
WHERE FechaDesde <= '25/06/2012'
Run Code Online (Sandbox Code Playgroud)

但它适用于开发,这适用于发布

SELECT CodPeriodoInsc,
       CONVERT(VARCHAR, FechaDesde, 103) AS FechaDesde, 
       CONVERT(VARCHAR, FechaHasta, 103) AS FechaHasta 
FROM SedesPeriodosInscripcion
WHERE FechaDesde <= '06/25/2012'
Run Code Online (Sandbox Code Playgroud)

但它不适用于开发.

有没有办法让查询在两个数据库上都能正常工作?

sql t-sql sql-server

-2
推荐指数
1
解决办法
962
查看次数