我使用ServiceStack.OrmLite并希望从表中获取行的总数.我现在做的在指出ServiceStack.OrmLite文件通过
db.Scalar<int>("SELECT COUNT(*) FROM User");
Run Code Online (Sandbox Code Playgroud)
但是,表的名称User可能会在将来发生变化,因此我正在寻找一种不对其进行硬编码的方法.是否有可能从其类中获取表的名称,例如ie
string table_name = db.GetTableName<User> ();
db.Scalar<int>("SELECT COUNT(*) FROM {0}", table_name);
Run Code Online (Sandbox Code Playgroud)
?
如何从表中选择计数并包含一个where子句来返回 a long?理想情况下我会使用db.Count而不是db.Select. 我只是不确定如何使用db.Count并且找不到相关文档。
long totalCount = 0;
using (IDbConnection db = dbFactory.OpenDbConnection())
{
totalCount = db.Count<Content>( ?? );
}
Console.WriteLine(totalCount);
Run Code Online (Sandbox Code Playgroud) 我正在使用 C# 和最新版本的 ServiceStack.OrmLite (4.0.33),并且尝试将一列类型添加bool到包含现有数据的现有表中。我收到一个明显的错误,由于空值,我无法将列添加到现有表中,并且新列没有默认值。查看该Default属性,我看不出可以在哪里将默认值设置为false。我不希望该列允许空值。我无法想象以前没有这样做过。
一如既往,我们非常感谢任何帮助。
我的表结构如下所示:
table Tenant: Id[PK], etc
table Contact: Id[PK], FirstName, LastName etc
table Sale: Id[PK], TenantId[FK], SellerId[FK], BuyerId[FK], etc
SellerId is a FK to Contact.Id
BuyerId is a FK to Contact.Id
TenantId is a FK to Tenant.Id
Run Code Online (Sandbox Code Playgroud)
我想使用OrmLite生成类似于以下内容的SQL:
select sale.*
, buyer.FirstName 'BuyerFirstName'
, buyer.LastName 'BuyerLastName'
, seller.FirstName 'SellerFirstName'
, seller.LastName 'SellerLastName'
from sale
left join
contact seller
on sale.SellerId = seller.Id
left join
contact buyer
on sale.BuyerId = buyer.Id
where tenantId = 'guid' -- this is being filtered at a …Run Code Online (Sandbox Code Playgroud) 有没有办法使用 servicestack / ormlite 预加载所有嵌套和子嵌套引用?
public class Person
{
public int Id { get; set; }
[References(typeof(Pants))]
public int PantsId { get; set; }
[Reference]
public Pants Pants { get; set; }
}
public class Pants
{
public int Id { get; set; }
[References(typeof(Pocket))]
public int PocketId { get; set; }
[Reference]
public Pocket Pocket { get; set; }
}
public class Pocket
{
public int Id { get; set; }
public int Depth { get; set; }
} …Run Code Online (Sandbox Code Playgroud) 我正在 ServiceStack 的 OrmLite 中编写分页查询,选择页面范围内的总记录和记录 id。假设query某个任意 SqlExpression 选择一堆记录:
var idQuery = query.SelectDistinct(r => r.Id);
var ids = Db.Column<int>(idQuery.Skip(request.Skip).Take(request.Take));
var total = Db.Count(idQuery);
Run Code Online (Sandbox Code Playgroud)
OrmLite 生成两个查询,其中一个针对 ids:
SELECT DISTINCT ...
Run Code Online (Sandbox Code Playgroud)
总数为一:
SELECT COUNT(*)
Run Code Online (Sandbox Code Playgroud)
我正在尝试让 OrmLite 生成SELECT COUNT(DISTINCT Id)总查询,或执行等效操作。这可能吗?
我正在使用ServiceStack Ormlite对数据库表进行部分更新.
我有一个模特:
public class Model
{
public int Id;
public int Property1;
public int Property2;
public int Property3;
}
Run Code Online (Sandbox Code Playgroud)
但我只想更新字段Property1和Property2.
有人知道怎么做这个吗?
谢谢.
本周我获准学习ServiceStack.我喜欢它.这是一个了不起的框架.但是我遇到了一个我无法得到一个相当直接的例子来工作的情况.(虽然它确实不像示例那样简单,但可能是更现实的一个例子.)
为这个长期问题提前道歉.
我有一个简单的DTO映射到这样的数据库......
[Description("Customer")]
[Alias("Customers")]
public class Customer : IHasId<int>
{
[Alias("Id")]
[AutoIncrement]
public int Id { get; set;}
[Required]
public int CompanyId { get; set;}
[Required]
public string FirstName { get; set;}
[Required]
public string LastName { get; set;}
public string MiddleInitial { get; set;}
public string EmployerName { get; set;}
public string ServiceLocationDescription { get; set;}
public string Street1 { get; set;}
public string Street2 { get; set;}
public string City { get; set;}
public string State { …Run Code Online (Sandbox Code Playgroud) 假设我在DB中有一个字段,可能的值为'Y','N',NULL.我想在我的DTO中使用布尔属性('N',NULL - > false,'Y' - > true)来表示它.在查询/更新/插入期间,我可以以某种方式插入OrmLite来自行进行转换(两个方向,ofc)吗?谢谢
我正在对数据可视化进行一些查询,并依赖GroupBy,Avg,Sum和类似函数从数据库中获取一个好的数据集.
我想使用与ServiceStack OrmLite类似的GroupBy.在ShippersExample页面上,我看到以下查询.有更简单或更好的方法吗?
例如,我有一个"位置"列,想要查找条目的前5个位置,并列出这些位置的次数.我只有1个表,所以不需要加入.
var rows = db.SqlList<ShipperTypeCount>(
"SELECT {0}, COUNT(*) AS Total
FROM Shippers
GROUP BY {0}
ORDER BY Total".Fmt("ShipperTypeId".SqlColumn()));
Run Code Online (Sandbox Code Playgroud)