标签: subsonic

亚音速查询(ConditionA OR ConditionB)和ConditionC

如何在Subsonic中构建此格式的查询

(ConditionA OR ConditionB)AND ConditionC

我尝试了各种方法,但我似乎无法得到理想的结果.

这是我厌倦的一件事:

Query q = Challenge.CreateQuery();
      q.WHERE(Challenge.Columns.ChallengeeKey, playerKey)
      .OR(Challenge.Columns.ChallengerKey, playerKey);
       q.AND(Challenge.Columns.Complete, false);
Run Code Online (Sandbox Code Playgroud)

c# subsonic

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

Subsonic如何处理连接?

在Nhibernate中,您可以通过在BeginRequest期间创建会话并在EndRequest处关闭来启动会话

public class Global: System.Web.HttpApplication
{
    public static ISessionFactory SessionFactory = CreateSessionFactory();

    protected static ISessionFactory CreateSessionFactory()
    {
        return new Configuration()
            .Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "hibernate.cfg.xml"))
            .BuildSessionFactory();
    }

    public static ISession CurrentSession
    {
        get{ return (ISession)HttpContext.Current.Items["current.session"]; }
        set { HttpContext.Current.Items["current.session"] = value; }
    }

    protected void Global()
    {
        BeginRequest += delegate
        {
            CurrentSession = SessionFactory.OpenSession();
        };
        EndRequest += delegate
        {
            if(CurrentSession != null)
                CurrentSession.Dispose();
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

亚音速中的等价物是什么?

我理解的方式,Nhibernate将在endrequest关闭所有连接.

原因:虽然在Subsonic项目中拍摄一些遗留代码时出现问题,但我得到了很多MySQL超时,这表明代码没有关闭连接

MySql.Data.MySqlClient.MySqlException:连接错误:超时已过期.从池中获取连接之前经过的超时时间.这可能是因为所有池连接都在使用中并且达到了最大池大小.生成:Tue,2009年8月11日05:26:05 GMT System.Web.HttpUnhandledException:抛出了类型'System.Web.HttpUnhandledException'的异常.---> MySql.Data.MySqlClient.MySqlException:连接错误:超时已过期.从池中获取连接之前经过的超时时间.这可能是因为所有池连接都在使用中并且达到了最大池大小.在MySql.Data.MySqlClient.MySqlPool.GetConnection()在SubSonic.MySql上的MySql.Data.MySqlClient.MySqlConnection.Open()处SubSonic.MySqlDataProvider.CreateConnection(String newConnectionString)SubSonic.MySqlDataProvider.CreateConnection()at SubSonic.AutomaticConnectionScope..ctor( DataSvider提供者)SubSonic的SubSonic.MySqlDataProvider.GetReader(QueryCommand qry),SubSonic上的SubSonic.DataService.GetReader(QueryCommand cmd).ReadadByParam(String columnName,Object paramValue)

我的连接字符串如下

<connectionStrings> …
Run Code Online (Sandbox Code Playgroud)

.net subsonic

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

使用Linq的Subsonic 3.0.0.3 SQL分页

刚从Subsonic 2.2 ActiveRecord更新到3.0.0.3.我正在尝试使用LINQ来执行这样的分页查找查询(我的对象/表称为"存储库"):

Repository.Find(item => item.DocumentTitle.Contains(searchTerm))
    .OrderBy(i => i.DocumentTitle).Skip((currentPage - 1) * itemsPerPage)
    .Take(itemsPerPage);
Run Code Online (Sandbox Code Playgroud)

当我使用SQL Server Profiler查看此查询生成的SQL时,SQL中没有分页,所有分页都在C#的内存中完成.现在,Subsonic查询语言确实有一个很好的GetPaged过程可以正常工作,但我认为LINQ也应该这样做.我在这里错过了什么或者这是LINQ的限制吗?

我知道这个Repository.GetPaged()函数,但是没有足够的参数 - 我需要做一个动态排序,以及一个Find().

linq subsonic paging subsonic3

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

包含的亚音速查询构造(Guid)

我有一个"笔记"表.Notes支持一级线程 - 换句话说,您可以回复一个注释,但无法回复另一个回复.所以表格如下所示:

CREATE TABLE [dbo].[Notes] (
 [NoteId] [uniqueidentifier] ROWGUIDCOL  NOT NULL DEFAULT (newid())
  CONSTRAINT [PK__Notes]
  PRIMARY KEY ([NoteId]),
 [ParentNoteId] UNIQUEIDENTIFIER NULL,
 [NoteText] NVARCHAR(MAX) NOT NULL,
 [NoteDate] DATETIME NOT NULL
    )
Run Code Online (Sandbox Code Playgroud)

所以我使用Subsonic活动记录来获取所有"父"笔记:

var allNotes = (from n in Note.All()
                        where n.ParentNoteId == null
                        orderby n.NoteDate descending
                        select n)
                        .Skip((pageIndex - 1) * pageSize).Take(pageSize);
Run Code Online (Sandbox Code Playgroud)

接下来,我只循环遍历IQueryable并填写注释Guids的通用列表:

List<Guid> noteList = new List<Guid>();
foreach (var note in allNotes)
{
     noteList.Add(note.NoteId);
}
Run Code Online (Sandbox Code Playgroud)

最后,我试图构建一个查询来获取原始查询中的所有回复:

replies = from n in Note.All()
          where n.ParentNoteId != null && noteList.Contains(n.ParentNoteId.Value) …
Run Code Online (Sandbox Code Playgroud)

c# linq subsonic activerecord subsonic3

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

从Powershell脚本中引用的DLL对App.Config连接字符串进行亚音速访问

我有一个包含Subsonic生成和增强代码的DLL来访问数据模型.实际上,它是原始程序集的合并DLL,Subsonic本身和一些其他引用的DLL到一个程序集中,称为"PowershellDataAccess.dll.但是,应该注意的是,我也尝试过这个引用每个程序集脚本以及也不起作用.

然后我尝试使用该程序集中的对象和方法.在这种情况下,我正在访问一个使用Subsonic加载一堆记录并从这些记录创建Lucene索引的类.

我遇到的问题是调用Subsonic方法从数据库中检索数据说它无法找到连接字符串.我将AppDomain指向适当的配置文件,该文件确实包含该连接字符串.

这是脚本.

$ScriptDir = Get-Location
[System.IO.Directory]::SetCurrentDirectory($ScriptDir)
[Reflection.Assembly]::LoadFrom("PowershellDataAccess.dll")
[System.AppDomain]::CurrentDomain.SetData("APP_CONFIG_FILE", "$ScriptDir\App.config")
$indexer = New-Object LuceneIndexingEngine.LuceneIndexGenerator
$indexer.GeneratePageTemplateIndex("PageTemplateIndex");
Run Code Online (Sandbox Code Playgroud)

我开始深入研究Subsonic本身,而Subsonic中的以下行正在寻找连接字符串并抛出异常:

ConfigurationManager.ConnectionStrings[connectionStringName]
Run Code Online (Sandbox Code Playgroud)

因此,出于好奇,我创建了一个具有单个类的程序集,该类具有单个属性,只运行该行以检索连接字符串名称.

我创建了一个调用程序集的ps1 并命中该属性.那个原型可以很好地找到连接字符串.

任何人都知道为什么Subsonic的部分似乎看不到连接字符串?

subsonic powershell

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

Lambdas捕获变量

考虑以下代码行:

private void DoThis() {
    int i = 5;
    var repo = new ReportsRepository<RptCriteriaHint>();

    // This does NOT work
    var query1 = repo.Find(x => x.CriteriaTypeID == i).ToList<RptCriteriaHint>();      

    // This DOES work
    var query1 = repo.Find(x => x.CriteriaTypeID == 5).ToList<RptCriteriaHint>();    
}
Run Code Online (Sandbox Code Playgroud)

因此,当我将实际数字硬连接到lambda函数时,它工作正常.当我将捕获的变量用于表达式时,它返回时出现以下错误:

从对象类型ReportBuilder.Reporter + <> c__DisplayClass0到已知的托管提供程序本机类型不存在映射.

为什么?我该如何解决?

variables subsonic lambda c#-3.0

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

这是否可能与亚力士

我需要从选定的表中生成实体/对象 - 不是全部.这有可能与亚力士,如果是这样如何?

c# database subsonic object

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

如何修改SubSonic 2.1代码生成

我想添加基本的日志记录,并对SubSonic 2.1生成的类进行一些其他微小的更改(我没有使用SubSonic 3.0 t4模板).

有没有办法在不修改SubSonic源代码的情况下执行此操作?

subsonic

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

使用SubSonic 2.2保存后获取记录ID

保存记录后如何立即获取记录ID(主键)?我将ID列作为自动生成.在保存该对象之前,我需要将ID作为"外键"传递给另一个对象.

目前我这样做

Product.Save()
Run Code Online (Sandbox Code Playgroud)

我不能

int id = Product.Save()
Run Code Online (Sandbox Code Playgroud)

subsonic primary-key

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

SubSonic如何执行SQL语句?

我的网站在我的网站上使用Subsonic 2.2.

我有一个奇怪的情况,我需要运行一些特殊的SQL语句.

public IList<string> GetDistincList(string TableName, string FieldName)
{
    string sqlToRun = string.Format("SELECT DISTINCT {0} FROM {1} ORDER BY {0}", FieldName, TableName);

    Query query = new Query(TableName);
    query.PleaseRunThis(sqlToRun);
    query.ExecuteReader();

}
Run Code Online (Sandbox Code Playgroud)

有人能帮我一下吗?看来,我只想返回一个通用的字符串列表.

谢谢!

subsonic adhoc-queries subsonic2.2

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