Ami*_*abh 5 nhibernate performance hibernate castle-activerecord
在某些情况下创建较轻版本的Entity是一个好主意,只是出于性能原因指向同一个表但映射的列数较少.例如,如果我有一个具有50列的联系表,并且在少数相关实体中我可能对FirstName和LastName属性感兴趣,那么创建一个轻量级的Contact表是个好主意.例如
public class ContactLite
{
public int Id {get; set;}
public string FirstName {get; set;}
public string LastName {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
是否可以将多个类映射到同一个表?
这不是一个好主意。相反,始终映射完整的类并创建可以使用Transformers.AliasToBeanLINQ 进行投影的较小类。
后者的一个例子:
var lightContacts = (from contact in session.Linq<Contact>()
where contact.Country = "Argentina"
select new LightContact
{
Id = contact.Id
FirstName = contact.FirstName,
LastName = contact.LastName
})
.ToList();
Run Code Online (Sandbox Code Playgroud)
即使按不同的字段进行过滤,这也只会从数据库中选择这三个字段。
值得注意的是,使用 LINQ,您还可以使用匿名类型来选择所需的任何投影,而无需创建其他类型或映射。
| 归档时间: |
|
| 查看次数: |
460 次 |
| 最近记录: |