рд╣реИрд▓реЛ, рд░реЗрд╡реЗрдирдбреАрдмреА

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ NoSQL-solution RavenDB рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЕрдзреНрдпрдпрди рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд░реЗрд╡реЗрдирдбреАрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд▓реЗрдЦ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рдирд┐рд░реНрджреЗрд╢реЛрдВ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ (рдФрд░ рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рд╕реЗ рднреА рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдпрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╣рд╛рдВ рдЬреЛ рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрд╕реЗ рдХреБрдЫ рдЬреЛрдбрд╝ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рддреБрд░рдВрдд рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рд░реЗрд╡реЗрдирдбреАрдмреА рдХрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ, рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред



PS рдХреНрдпреЛрдВ рдирд╣реАрдВ MongoDB рдпрд╛ CouchDB? рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛, рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдФрд░ рдПрдХ рд╣рдж рддрдХ рдпрд╣ рдирд┐рд░реНрдгрдп рдЕрднреА рддрдХ рдЬрд▓рд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛ред





рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред



рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдПрдХ рд╕рд░реНрд╡рд░ рдлрд╝реЛрд▓реНрдбрд░ рд╣реИ, рдФрд░ рд░реЗрд╡реЗрдирдбреАрдмреА рд╕рд░реНрд╡рд░ рдЗрд╕рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдкрд╛рд╕ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рд▓рдЧрднрдЧ 90 рдПрдордмреА рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдЯреБрдХрдбрд╝рд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ - рд╕рд░реНрд╡рд░ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░реЗрд╡реЗрди / рдПрд╕реЗрдиреНрдЯ / рд▓реЙрдЧрдЗрдлрд╛рдЗрд▓рд╛рдЗрдЬ, рдЗрд╕рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди 16 рдПрдордмреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЖрдХрд╛рд░ рдШрдЯрдХрд░ 40 рдПрдордмреА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкрдирд╛ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред 1 рдкрд░ред

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдирд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдПрдХ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЗрд╕рдХрд╛ рдкрддрд╛ http: // localhost: 8080 рд╣реИред рдЗрд╕рдореЗрдВ, рдЖрдк рдЙрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╣реИрдВ, рдЗрдВрдбреЗрдХреНрд╕ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдирд┐рдХрд╛рд▓реЗрдВред







рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЦреЛрд▓реЗрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ NuGet рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рддреЛ рд╕рдВрджрд░реНрдн рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреИрдХреЗрдЬ рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╣рдо рдСрдирд▓рд╛рдЗрди рдЯреИрдм рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рд░реЗрд╡реЗрдирдмреЗрдб рдвреВрдВрдврддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ NuGet рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд╛рд▓ рджреЛ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ 3 рдЕрд╕реЗрдВрдмрд▓реА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдпрджрд┐ рдЖрдк .NET 3.5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ-3.5 рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ):



рдЕрдм рдЖрдк рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд 2 рдкрдВрдХреНрддрд┐рдпрд╛рдБ DocumentStore рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреА рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рдж рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:



var store = new DocumentStore {Url = "http://localhost:8080" };

store.Initialize();








рдЕрдм рд╣рдо рдХреБрдЫ рдХрдХреНрд╖рд╛рдПрдВ рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рд╣рдорд╛рд░реЗ рдбреЛрдореЗрди рдореЙрдбрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗред



public class Product

{

public string Id { get ; set ; }

public string Name { get ; set ; }

public decimal Cost { get ; set ; }

}



public class Order

{

public string Id { get ; set ; }

public string Customer { get ; set ; }

public IList OrderLines { get ; set ; }



public Order()

{

OrderLines = new List ();

}

}



public class OrderLine

{

public string ProductId { get ; set ; }

public int Quantity { get ; set ; }

}








рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЗ рдкрд╛рд╕ Id рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдпрд╣ рдПрдХ рд╢рд░реНрдд рд╣реИ, рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ RavenDB рдЖрдкрдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕рдВрдЦреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛ред



рдирд┐рдореНрди рдХреЛрдб рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ 2 рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреЛрдбрд╝рддрд╛ рд╣реИ:



using ( var session = store.OpenSession())

{

var product = new Product

{

Cost = 3.99m,

Name = "Milk" ,

};

session.Store(product);

session.SaveChanges();



session.Store( new Order

{

Customer = "customers/ayende" ,

OrderLines =

{

new OrderLine

{

ProductId = product.Id,

Quantity = 3

},

}

});

session.SaveChanges();

}








рдПрдкреАрдЖрдИ рдХрд╛рд░реНрдп рдкреИрдЯрд░реНрди рдХреА рдЗрдХрд╛рдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рд╕рддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрд╕рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ (рд╕реНрдЯреЛрд░ рд╡рд┐рдзрд┐)ред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдЙрддреНрдкрд╛рдж рдСрдмреНрдЬреЗрдХреНрдЯ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ SaveChanges рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ (http: // localhost: 8080) рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЯреИрдм рдкрд░ рдЖрдк 2 рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╡рд░реНрдЧреЛрдВ рд╕реЗ рдЗрд╕рдХреЗ рд╕рднреА рдЧреБрдгреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЯреИрдм рд╕реЗ рдЧреБрдг рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ .NET рдкреНрд░рдХрд╛рд░, рд░реЗрд╡реЗрдирдбреАрдмреА рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдирд╛рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред







рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рд╕реЗ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦреЗрдВ:



using ( var session = store.OpenSession())

{

var order = session.Load( "orders/1" );

Console .WriteLine( "Customer: {0}" , order.Customer);

foreach ( var orderLine in order.OrderLines)

{

Console .WriteLine( "Product: {0} x {1}" , orderLine.ProductId, orderLine.Quantity);

}

}








рдпрд╛рдиреА рд╣рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ 1 рдХреЗ рдмрд░рд╛рдмрд░ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред



рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдлрд╝реАрд▓реНрдб рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:



store.DatabaseCommands.PutIndex( "OrdersContainingProduct" , new IndexDefinition

{

Map = orders => from order in orders

from line in order.OrderLines

select new { line.ProductId }

});








рдЕрдм рдЖрдк ProductId рджреНрд╡рд╛рд░рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



using ( var session = store.OpenSession())

{

var orders = session.LueneQuery( "OrdersContainingProduct" )

.Where( "ProductId:products/1" )

.ToArray();



foreach ( var order in orders)

{

Console .WriteLine( "Id: {0}" , order.Id);

Console .WriteLine( "Customer: {0}" , order.Customer);

foreach ( var orderLine in order.OrderLines)

{

Console .WriteLine( "Product: {0} x {1}" , orderLine.ProductId, orderLine.Quantity);

}

}

}






рдпрд╣ рд░реЗрд╡реЗрдирдбреАрдмреА рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдореИрдВ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:

  1. рдпрджрд┐ рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдХрдИ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдФрд░ рднрд╛рдЧреЛрдВ рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рддрдХ SaveChanges рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рд░реЗрд╡реЗрдирдмреЗрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА, SaveChanges рдХреЛ 30 рд╕реЗ рдЕрдзрд┐рдХ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
  2. рдЬрдм рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдЦреЛрдЬрддреЗ рд╣реИрдВ, рддреЛ рд░реЗрд╡реЗрдирдбреАрдмреА рдЗрдВрдЬрди 128 рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрди рд╕рднреА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:



    var query = session.Advanced.LuceneQuery<Order>( "OrdersContainingProduct" )

    .Where( "ProductId:products/1" );

    int actual = 0;

    const int pageSize = 128;

    int count = query.QueryResult.TotalResults;



    do

    {

    var orders = session.Advanced

    .LuceneQuery<Order>( "OrdersContainingProduct" )

    .Where( "ProductId:products/1" )

    .Skip(actual)

    .Take(pageSize);



    actual = actual + pageSize;

    foreach ( var order in orders)

    {

    App.Logger.Info( "Id: {0}" , order.Id);

    App.Logger.Info( "Customer: {0}" , order.Customer);

    }



    if (actual >= count)

    break ;

    } while ( true );










рд╕рдВрджрд░реНрдн



рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрдерд▓

рд░реЗрд╡рди рдбреАрдмреА рдХреНрдпреЛрдВ?

рд░реЗрд╡реЗрдирдбреАрдмреА - рдПрдХ рдкрд░рд┐рдЪрдп



All Articles