Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 亚音速单WHERE子句_Linq_Subsonic - Fatal编程技术网

Linq 亚音速单WHERE子句

Linq 亚音速单WHERE子句,linq,subsonic,Linq,Subsonic,是否可以对亚音速查询应用WHERE子句 例如,我得到一个单一的基于id db.Single<Storage>(id); db.Single(id); 但是,如何根据一个简单的WHERE子句得到一个单子呢 db.Single<Storage>(WHERE columnname == "value"); db.Single(其中columnname==“value”); 这是可能的: // Will return a Storage instance with prop

是否可以对亚音速查询应用WHERE子句

例如,我得到一个单一的基于id

db.Single<Storage>(id);
db.Single(id);
但是,如何根据一个简单的WHERE子句得到一个单子呢

db.Single<Storage>(WHERE columnname == "value");
db.Single(其中columnname==“value”);
这是可能的:

// Will return a Storage instance with property IsNew = true, if record does not exist
// since an object created with new never can be null
var storage1 = new Storage(1); // id = 1
var storage1 = new Storage(Storag.Columns.ColumnName, "value");

// Will return 0 if record not found (subsonic3 only)
var storage3 = (from s in Storage
               where s.ColumnName == "value"
               select s).SingleOrDefault();

// Will throw an exception if record not found  (subsonic3 only)
var storage3 = (from s in Storage
               where s.ColumnName == "value"
               select s).Single();   
由于db是一个分部类,所以可以对其进行扩展。只需在同一名称空间中创建一个新文件(但在解决方案中创建另一个文件夹)。这适用于亚音速2,但我认为类似于亚音速3

public static partial class DB
{
    public static T Single<T>(String columName, Object columnValue) where T: RecordBase<T>, new()
    {
        return Select().From<T>()
                       .Where(columnName).IsEqualTo(columnValue)
                       .ExecuteSingle<T>();
    }
}
公共静态部分类DB
{
公共静态T Single(字符串列名,对象列值),其中T:RecordBase,new()
{
返回Select().From()
.Where(columnName).IsEqualTo(columnValue)
.ExecuteSingle();
}
}

感谢以上内容,这是一个帮助,最终我将其简化为以下内容

        db.Single<Storage>(s => s.ColumnName == "value");
db.Single(s=>s.ColumnName==“value”);

是的,我没想过;)仍然使用亚音速2,因为我仅限于Framework2.0。期待着在不久的将来加入Mirregate。@Schlaviener:不谈主题,但既然你提到了,我会说我对亚音速3不太满意。当然LINQ语法很好,但它有缺陷,而且当LINQ提供程序没有遇到缺陷时,它只是受到了明显的限制。更不用说模板化代码中有足够多的破坏性更改,这是一个麻烦。我希望你能很快在框架中提升,但不要对SS3太兴奋,哈哈。因为我使用的mysql可能没有sql server测试得多,所以我希望能找到一些bug。但由于它是开源的,我可以自己修复;)对我来说,杀手级功能是亚音速,结合XtraGrid的服务器模式和linq数据源,我有一个演示应用程序正在运行,非常棒。我可以在一个有200000多条记录的表上进行增量搜索/排序和分组,而且速度非常快。@qstarin-对我来说,从类生成数据库节省了很多,任何不利之处都可以原谅。在m$将此功能构建到下一个实体框架之前,我不认为还有其他选择。对于.Net(如SubSonic),只有大约10种不同的工具可以从数据库中生成数据访问层,其中一些工具实际上支持MySQL作为一级数据库@Schlaviener:除了亚音速v3已经看到多个bug被重新引入到代码库中,并且存在一些悬而未决的问题,这些问题是主动开发人员在处理(比如)Oracle支持时没有解决的。当然,这是每个人自己的选择。