我最近开始使用ServiceStack及其ORMLite框架。我在Google上搜索并浏览了源代码,但找不到任何相关内容。ServiceStack ORMLite - 选择列
当用ORMLite执行查询时,有什么办法可以选择特定的列吗? 类似的东西:Db.First<Model>(q => q.Id == someId, "Column1, Column2")
除非我错过了这个功能,否则我很惊讶之前没有人问过这个,因为这是优化您的数据库事务的经验法则之一。
我最近开始使用ServiceStack及其ORMLite框架。我在Google上搜索并浏览了源代码,但找不到任何相关内容。ServiceStack ORMLite - 选择列
当用ORMLite执行查询时,有什么办法可以选择特定的列吗? 类似的东西:Db.First<Model>(q => q.Id == someId, "Column1, Column2")
除非我错过了这个功能,否则我很惊讶之前没有人问过这个,因为这是优化您的数据库事务的经验法则之一。
如果要指定其他的表,你需要使用SQL作为seen in this earlier example
所以你的情况,你可以做这样的事情列:
Db.First<Model>("SELECT Column1, Column2 FROM AnyTableOrView");
您还可以创建一个局部模型看在你的餐桌通过与[Alias]
属性装饰它,如:
[Alias("AnyTableOrView")]
public class Model {
public int Id { get; set; }
public string Column1 { get; set; }
public string Column2 { get; set; }
}
然后,你可以这样做:
Db.First<Model>(q => q.Id == someId);
而且它只会SELECT +填充部分模型中的字段。
我也试试这个:
写访问DB基于它的ID
var dbFactory = new OrmLiteConnectionFactory(
"Data Source=MyDB;User Id=user;Password=pwd", // Connection String
OracleDialect.Provider);
using (var db = dbFactory.OpenDbConnection())
{
var event = db.GetByIdOrDefault<Event>(request.Id);
}
在这一点,var'event'被填充,但只有Id字段被填充! 该类的所有其他字段未填充(而数据库中确实存在数据)。
这是最简单的我可以做,它不工作。有任何想法吗 ? (PS:我使用OrmLite用于Oracle)
感谢
我已经找到了问题。 这是由于我的类中的字段(定义为字符串)与相应的Oracle字段(即DATE)之间的类型匹配不正确。
我用datetime替换了字符串,并像魅力一样工作。
因此,它与VIEW完美协作,这大大简化了代码。
我有类似的问题,但我的解决方案是不同的。
我在我的POCO中有一个int属性。我的查询(来自Oracle)对此属性返回null。它导致异常被提出并阻止该行的进一步处理。 结果是部分人口稠密的POCO。
解决方案是更改为可空类型。
public int? mypropperty
嗨cobolstinks,并感谢您的答案。我想你是在谈论Java版本,它是为了在移动设备上运行。我实际上指的是ServiceStack.ORMLite框架,它是一个C#端口,用于ASP.Net应用程序 – Alexis
yeap我不好,我指的是ormlite,并与ADK一起使用它。我删除了我原来的评论。 – cobolstinks