J'essaye OrmLite pour voir si je peux remplacer Entity Framework dans mes projets. La vitesse est assez importante sur de simples requêtes. Mais j'ai essayé de mapper/référence une [1 à plusieurs- relation et lu la documentation + examiné le code de test de la page github mais sans succès. Ceci est mon exemple. Y a-t-il quelque chose que j'ai oublié ou que je devrais faire pour le faire fonctionner comme Entity Framework?ServiceStack Mappage OrmLite avec les références ne fonctionnant pas
Exemple
// EF: returns +15.000 records + mapped > product.StockItems (slow)
dbContext.Products.Include(x => x.StockItems).ToList();
// OrmLite: returns +100.000 records (NO mapping > product.StockItems)
db.Select<Product>(db.From<Product>().Join<StockItem>());
// OrmLite: +15.000 separate requests to sql server (bad workarround + slow)
foreach (var product in db.Select<Product>())
{
// manual mapping
product.StockItems = db.Select<StockItem>(x => x.ProductId == product.Id);
}
Product.cs
public class Product
{
public int Id { get; set; }
public ProductType ProductType { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int DisplayOrder { get; set; }
public bool LimitedToStores { get; set; }
public string Sku { get; set; }
public decimal Price { get; set; }
public decimal OldPrice { get; set; }
public decimal SpecialPrice { get; set; }
public decimal DiscountPercentage { get; set; }
public DateTime? DateChanged { get; set; }
public DateTime? DateCreated { get; set; }
//...
[Reference]
public virtual IList<StockItem> StockItems { get; set; } = new List<StockItem>();
}
StockItem.cs
public class StockItem
{
public int Id {get; set;}
[References(typeof(Product))]
public int ProductId { get; set; }
public string Size { get; set; }
public int TotalStockQuantity { get; set; }
public string Gtin { get; set; }
public int DisplayOrder { get; set; }
// ...
[Reference]
public virtual Product Product { get; set; }
}
Thx @mythz. Exactement ce que je cherchais. Fonctionne très bien. Je vais continuer à convertir mes projets et remplacer EF par OrmLite. L'amélioration des performances est significative. – Nesse