dommel-ci - Dommel 2.0.0-beta7-00394

Simple CRUD operations for Dapper.

PM> Install-Package Dommel -Version 2.0.0-beta7-00394 -Source https://www.myget.org/F/dommel-ci/api/v3/index.json

Copy to clipboard

> nuget.exe install Dommel -Version 2.0.0-beta7-00394 -Source https://www.myget.org/F/dommel-ci/api/v3/index.json

Copy to clipboard

> dotnet add package Dommel --version 2.0.0-beta7-00394 --source https://www.myget.org/F/dommel-ci/api/v3/index.json

Copy to clipboard
<PackageReference Include="Dommel" Version="2.0.0-beta7-00394" />
Copy to clipboard
source https://www.myget.org/F/dommel-ci/api/v3/index.json

nuget Dommel  ~> 2.0.0-beta7-00394
Copy to clipboard

> choco install Dommel --version 2.0.0-beta7-00394 --source https://www.myget.org/F/dommel-ci/api/v2

Copy to clipboard
Import-Module PowerShellGet
Register-PSRepository -Name "dommel-ci" -SourceLocation "https://www.myget.org/F/dommel-ci/api/v2"
Install-Module -Name "Dommel" -RequiredVersion "2.0.0-beta7-00394" -Repository "dommel-ci" -AllowPreRelease
Copy to clipboard

Dommel

CRUD operations with Dapper made simple.

Windows Linux NuGet MyGet Test Coverage
AppVeyor Travis NuGet MyGet Pre Release codecov

Dommel provides a convenient API for CRUD operations using extension methods on the IDbConnection interface. The SQL queries are generated based on your POCO entities. Dommel also supports LINQ expressions which are being translated to SQL expressions. Dapper is used for query execution and object mapping.

There are several extensibility points available to change the behavior of resolving table names, column names, the key property and POCO properties. See Extensibility for more details.

Installing Dommel

Dommel is available on NuGet.

Install using the .NET CLI:

dotnet add package Dommel

Install using the NuGet Package Manager:

Install-Package Dommel

Using Dommel

Retrieving entities by ID

var product = await connection.GetAsync<Product>(1);

Retrieving all entities in a table

var products = await connection.GetAllAsync<Product>();

Selecting entities using a predicate

Dommel allows you to specify a predicate which is being translated into a SQL expression. The arguments in the lambda expression are added as parameters to the command.

var products = await connection.SelectAsync<Product>(p => p.Name == "Awesome bike" && p.Created < new DateTime(2014, 12, 31) && p.InStock > 5);

Which would translate in the following SQL:

select * from Products where Name = @p1 and Created < @p2 and InStock > @p3

You can add parentheses to combine and & or queries:

var products = await connection.SelectAsync<Product>(p => p.Name == "Awesome bike" && (p.Created < new DateTime(2014, 12, 31) || p.InStock > 5));

Which would translate in the following SQL:

select * from Products where Name = @p1 and (Created < @p2 or InStock > @p3)

There is also a FirstOrDefaultAsync<T>(...) method available to select the first entity matching the predicate.

Like-queries

It is possible to generate LIKE-queries using Contains(), StartsWith() or EndsWith() on string properties:

var products = await connection.SelectAsync<Product>(p => p.Name.Contains("bike"));
var products = await connection.SelectAsync<Product>(p => p.Name.StartsWith("bike"));
var products = await connection.SelectAsync<Product>(p => p.Name.EndsWith("bike"));

Inserting entities

var product = new Product { Name = "Awesome bike", InStock = 4 };
var id = await connection.InsertAsync(product);

Updating entities

var product = await connection.GetAsync<Product>(1);
product.Name = "New name";
await connection.UpdateAsync(product);

Removing entities

var product = await connection.GetAsync<Product>(1);
await connection.DeleteAsync(product);

Multi mapping

One-to-one relations

Dommel is able to generate join-queries based on the specified multi mapping function. Consider the following POCO's:

public class Product
{
    public int Id { get; set; }

    public string Name { get; set; }

    // Maps to the foreign key column
    public int CategoryId { get; set; }

    // The navigation property
    public Category Category { get; set; }
}


public class Category
{
    public int Id { get; set; }

    public string Name { get; set; }
}

The Product with its associated Category can be queried toegether using the Get<T1, T2, ..., TResult>() method:

var product = await product.GetAsync<Product, Category, Product>(1, (product, category) =>
{
    product.Category = category;
    return product;
});
Foreign key columns

CategoryId is automatically used as foreign key between Product and Category. This follows a simple convention: joining table name + Id (Category + Id). You can override this behavior by using the [ForeignKey("ForeignKeyColumnName")] attribute or by implementing your own IForeignKeyPropertyResolver.

One-to-many relations

One-to-many relationships work in a similar way, expect that the foreign key is defined on the joined type rather than the source type. For example:

public class Order
{
    public int Id { get; set; }

    // The navigation property
    public ICollection<OrderLine> OrderLines { get; set; } = new List<OrderLine>();
}

public class OrderLine
{
    public int Id { get; set; }

    // The foreign key column to the Order table
    public int OrderId { get; set; }

    public string Description { get; set; }
}

The Order with its child OrderLine's can be queried toegether using the Get<T1, T2, ..., TResult>() method:

var product = await product.GetAsync<Order, OrderLine, Order>(1, (order, line) =>
{
    // Naive mapping example, in reality it requires more gymnastics
    order.OrderLines.Add(line);
    return order;
});

Automatic multi mapping

Note: this is an experimental feature.

Dommel is able to create simple join-expressions for retrieving parent-child entities. One-to-one and one-to-many relations are supported. It works the samy way as regular mapping, except there is no need to specify a function which performs the mapping of the objects. Using the same POCO's as the previous examples:

Retrieving a Product and its associated Category:

var product = product.Get<Product, Category, Product>(1);

Retrieving one Order and with its child OrderLine's:

var product = product.Get<Order, OrderLine, Order>(1);

Entity equality

When joining with two or more tables with a one-to-many relationship, you are required to override Equals(object obj) method or implement the IEquatable<T> interface on your POCO's so Dommel can determine whether an entity is already added to the collection. For example:

public class OrderLine : IEquatable<OrderLine>
{
    public int Id { get; set; }

    public int OrderId { get; set; }

    public string Description { get; set; }

    public bool Equals(OrderLine other) => Id == other.Id;
}

Combining Select and multi-mapping

It's possible to combine Select queries and multi-mapping. For example:

var products = await connection.SelectAsync<Product, Category, Product>(x => x.Name.StartsWith("bike"));

This is applicable for Select, SelectAsync, FirstOrDefault and FirstOrDefaultAsync. Both with manual and automatic multi-mapping.

From-queries

With From-queries you can create more complex queries on a certain table by providing access to the SqlExpression<T>. For example:

var products = await connection.FromAsync<Product>(sql => sql
    .Where(x => x.Name.StartsWith("bike") && x.DeletedOn == null)
    .OrWhere(x => x.InStock > 5)
    .OrderBy(x => x.DateCreated)
    .Page(1, 25)
    .Select()));

Async and non-async

All Dommel methods have async and non-async variants, such as as Get & GetAsync, GetAll & GetAllAsync, Select & SelectAsync, Insert & InsertAsync, Update & UpdateAsync, Delete & DeleteAsync, etc.

Query builders

Dommel supports building specialized queries for a certain RDBMS. By default, query builders for the following RDMBS are included: SQL Server, SQL Server CE, SQLite, MySQL and Postgres. The query builder to be used is determined by the connection type. To add or overwrite an existing query builder, use the AddSqlBuilder() method:

DommelMapper.AddSqlBuilder(typeof(SqlConnection), new CustomSqlBuilder());

Extensibility

ITableNameResolver

Implement this interface if you want to customize the resolving of table names when building SQL queries.

public class CustomTableNameResolver : ITableNameResolver
{
    public string ResolveTableName(Type type)
    {
        // Every table has prefix 'tbl'.
        return $"tbl{type.Name}";
    }
}

Use the SetTableNameResolver() method to register the custom implementation:

SetTableNameResolver(new CustomTableNameResolver());

IKeyPropertyResolver

Implement this interface if you want to customize the resolving of the key property of an entity. By default, Dommel will search for a property with the [Key] attribute, or a column with the name 'Id'.

If you, for example, have the naming convention of {TypeName}Id for key properties, you would implement the IKeyPropertyResolver like this:

public class CustomKeyPropertyResolver : IKeyPropertyResolver
{
    public ColumnPropertyInfo[] ResolveKeyProperties(Type type)
    {
        return new [] { new ColumnPropertyInfo(type.GetProperties().Single(p => p.Name == $"{type.Name}Id"), isKey: true) };
    }
}

Use the SetKeyPropertyResolver() method to register the custom implementation:

DommelMapper.SetKeyPropertyResolver(new CustomKeyPropertyResolver());

IForeignKeyPropertyResolver

Implement this interface if you want to customize the resolving of the foreign key property from one entity to another. By default Dommel will search for a property of {TypeName}Id or the column name specified using the [ForeignKey] attribute.

This is a rather advanced interface. Providing your own implementation requires quite some knowledge of the way Dommel handles foreign key relationships. Consider subclassing DefaultForeignKeyPropertyResolver and override ResolveForeignKeyProperty().

Use the SetForeignKeyPropertyResolver() method to register the custom implementation:

DommelMapper.SetForeignKeyPropertyResolver(new CustomForeignKeyPropertyResolver());

IColumnNameResolver

Implement this interface if you want to customize the resolving of column names for when building SQL queries. This is useful when your naming conventions for database columns are different than your POCO properties.

public class CustomColumnNameResolver : IColumnNameResolver
{
    public string ResolveColumnName(PropertyInfo propertyInfo)
    {
        // Every column has prefix 'fld' and is uppercase.
        return $"fld{propertyInfo.Name.ToUpper()}";
    }
}

Use the SetColumnNameResolver() method to register the custom implementation:

DommelMapper.SetColumnNameResolver(new CustomColumnNameResolver());
  • .NETStandard 2.0
    • Dapper (>= 2.0.35)
    • System.ComponentModel.Annotations (>= 4.7.0)
  • .NETStandard 2.0: 2.0.0.0

Owners

Henk Mollema

Authors

Henk Mollema

Project URL

https://github.com/henkmollema/Dommel

License

MIT

Tags

dommel crud dapper database orm

Info

437 total downloads
2 downloads for version 2.0.0-beta7-00394
Download (50.38 KB)
Found on the current feed only

Package history

Version Size Last updated Downloads Mirrored?
3.3.1-beta.35 303.8 KB Thu, 04 Apr 2024 11:06:55 GMT 0
3.3.1-beta.34 303.81 KB Thu, 04 Apr 2024 11:03:19 GMT 0
3.3.1-beta.33 303.78 KB Thu, 04 Apr 2024 10:58:33 GMT 0
3.3.0-beta.32 302.46 KB Tue, 06 Feb 2024 10:47:42 GMT 2
3.3.0-beta.31 302.44 KB Thu, 18 Jan 2024 15:39:22 GMT 3
3.3.0-beta.30 302.44 KB Thu, 18 Jan 2024 15:33:16 GMT 2
3.3.0-beta.29 302.85 KB Thu, 18 Jan 2024 14:58:48 GMT 3
3.2.1-beta.28 302.82 KB Thu, 18 Jan 2024 14:48:44 GMT 3
3.2.1-beta.27 302.27 KB Wed, 17 Jan 2024 16:52:27 GMT 2
3.2.1-beta.26 302.27 KB Wed, 17 Jan 2024 16:46:14 GMT 2
3.2.1-beta.25 302.36 KB Wed, 17 Jan 2024 16:42:24 GMT 2
3.2.1-beta.24 152.5 KB Wed, 17 Jan 2024 16:37:13 GMT 2
3.0.0-beta.4 73.18 KB Tue, 21 Dec 2021 10:29:29 GMT 3
2.4.0-beta.441 72.98 KB Thu, 02 Dec 2021 14:49:14 GMT 2
2.4.0-beta.3 72.98 KB Fri, 03 Dec 2021 08:18:33 GMT 3
2.4.0-beta.2 72.98 KB Thu, 02 Dec 2021 15:51:42 GMT 2
2.4.0-beta.1 72.96 KB Thu, 02 Dec 2021 15:11:07 GMT 3
2.3.3-beta.439 59.52 KB Wed, 01 Dec 2021 14:52:54 GMT 3
2.3.3-beta.436 59.42 KB Wed, 01 Dec 2021 10:49:32 GMT 3
2.3.3-beta.435 59.4 KB Wed, 01 Dec 2021 10:47:53 GMT 3
2.3.3-beta.434 59.19 KB Thu, 04 Nov 2021 15:18:10 GMT 3
2.3.3-beta.433 59.19 KB Thu, 04 Nov 2021 13:57:15 GMT 2
2.3.3-beta.432 59.21 KB Thu, 04 Nov 2021 13:35:24 GMT 3
2.3.3-beta.431 59.19 KB Thu, 04 Nov 2021 13:10:05 GMT 3
2.3.3-beta.430 59.2 KB Mon, 12 Jul 2021 13:24:35 GMT 3
2.3.2-beta.429 59.19 KB Mon, 12 Jul 2021 13:20:14 GMT 3
2.3.1-beta.428 60.42 KB Mon, 12 Jul 2021 12:28:25 GMT 3
2.3.0-beta.425 60.28 KB Thu, 03 Jun 2021 07:51:53 GMT 3
2.3.0-beta.424 60.28 KB Thu, 03 Jun 2021 07:50:06 GMT 3
2.2.0-beta.423 60.27 KB Thu, 03 Jun 2021 07:42:49 GMT 3
2.2.0-beta.422 59.29 KB Wed, 02 Jun 2021 12:14:30 GMT 3
2.2.0-beta.421 58.1 KB Thu, 27 May 2021 12:03:03 GMT 3
2.2.0-beta.420 58.13 KB Wed, 07 Apr 2021 17:56:46 GMT 3
2.2.0-beta.419 58.13 KB Wed, 31 Mar 2021 19:30:28 GMT 2
2.2.0-beta.418 58.13 KB Wed, 31 Mar 2021 18:47:51 GMT 2
2.2.0-beta.417 58.12 KB Wed, 31 Mar 2021 18:44:17 GMT 2
2.2.0-beta.416 58.15 KB Thu, 17 Sep 2020 10:51:29 GMT 5
2.1.0-beta8-00412 58.16 KB Tue, 08 Sep 2020 14:11:58 GMT 3
2.1.0-beta8-00411 58.16 KB Fri, 04 Sep 2020 15:31:26 GMT 2
2.0.0-beta8-00410 56.72 KB Fri, 04 Sep 2020 14:39:38 GMT 3
2.0.0-beta8-00409 50.4 KB Thu, 27 Aug 2020 12:50:58 GMT 3
2.0.0-beta8-00408 50.35 KB Sun, 23 Aug 2020 10:13:23 GMT 3
2.0.0-beta8-00407 50.46 KB Wed, 24 Jun 2020 08:26:18 GMT 3
2.0.0-beta8-00406 50.44 KB Wed, 24 Jun 2020 08:24:43 GMT 3
2.0.0-beta8-00405 50.45 KB Thu, 11 Jun 2020 07:11:07 GMT 3
2.0.0-beta8-00404 50.45 KB Wed, 10 Jun 2020 18:28:33 GMT 3
2.0.0-beta8-00403 50.45 KB Wed, 10 Jun 2020 18:26:29 GMT 3
2.0.0-beta8-00402 50.45 KB Wed, 10 Jun 2020 16:33:49 GMT 3
2.0.0-beta8-00401 50.47 KB Wed, 10 Jun 2020 16:32:08 GMT 3
2.0.0-beta8-00400 50.46 KB Wed, 10 Jun 2020 16:30:06 GMT 3
2.0.0-beta8-00399 50.46 KB Sun, 24 May 2020 21:54:40 GMT 2
2.0.0-beta8-00398 50.45 KB Tue, 19 May 2020 18:07:58 GMT 4
2.0.0-beta8-00397 50.45 KB Sun, 17 May 2020 12:09:22 GMT 3
2.0.0-beta8-00396 50.45 KB Sun, 17 May 2020 12:06:03 GMT 3
2.0.0-beta7-00395 50.44 KB Sun, 17 May 2020 11:53:56 GMT 2
2.0.0-beta7-00394 50.38 KB Sun, 17 May 2020 10:04:28 GMT 2
2.0.0-beta7-00393 50.38 KB Fri, 08 May 2020 21:50:21 GMT 2
2.0.0-beta7-00392 50.36 KB Tue, 05 May 2020 15:30:11 GMT 3
2.0.0-beta7-00391 50.38 KB Sun, 03 May 2020 19:35:21 GMT 3
2.0.0-beta7-00390 50.36 KB Mon, 20 Apr 2020 11:33:54 GMT 2
2.0.0-beta7-00389 50.36 KB Mon, 20 Apr 2020 11:27:23 GMT 3
2.0.0-beta7-00388 98.78 KB Mon, 20 Apr 2020 11:14:39 GMT 3
2.0.0-beta7-00387 97.05 KB Sun, 19 Apr 2020 11:17:17 GMT 2
2.0.0-beta7-00386 96.6 KB Sun, 19 Apr 2020 10:47:53 GMT 2
2.0.0-beta7-00385 96.95 KB Sun, 19 Apr 2020 09:54:56 GMT 3
2.0.0-beta7-00384 96.92 KB Sun, 19 Apr 2020 09:52:30 GMT 3
2.0.0-beta7-00383 96.9 KB Sun, 19 Apr 2020 09:44:29 GMT 3
2.0.0-beta7-00382 96.91 KB Sun, 19 Apr 2020 09:42:02 GMT 3
2.0.0-beta7-00381 96.94 KB Sun, 19 Apr 2020 09:39:34 GMT 2
2.0.0-beta7-00380 96.95 KB Sun, 19 Apr 2020 09:37:07 GMT 2
2.0.0-beta7-00379 96.96 KB Sun, 19 Apr 2020 09:34:40 GMT 3
2.0.0-beta7-00378 96.78 KB Thu, 26 Mar 2020 19:30:46 GMT 3
2.0.0-beta7-00377 95.19 KB Tue, 17 Mar 2020 13:06:56 GMT 3
2.0.0-beta7-00375 95.16 KB Thu, 06 Feb 2020 10:52:13 GMT 2
2.0.0-beta7-00374 95.18 KB Wed, 05 Feb 2020 20:21:06 GMT 3
2.0.0-beta7-00373 95.19 KB Tue, 04 Feb 2020 22:27:56 GMT 3
2.0.0-beta7-00372 95.18 KB Fri, 10 Jan 2020 12:42:12 GMT 2
2.0.0-beta7-00371 95.42 KB Tue, 07 Jan 2020 21:52:28 GMT 4
2.0.0-beta7-00369 95.43 KB Tue, 07 Jan 2020 16:15:41 GMT 2
2.0.0-beta7-00368 95.38 KB Tue, 07 Jan 2020 16:10:18 GMT 4
2.0.0-beta7-00367 95.43 KB Tue, 07 Jan 2020 15:33:28 GMT 3
2.0.0-beta7-00366 96.02 KB Tue, 07 Jan 2020 15:26:54 GMT 3
2.0.0-beta7-00365 95.96 KB Tue, 07 Jan 2020 08:14:00 GMT 3
2.0.0-beta7-00364 95.97 KB Sat, 14 Dec 2019 16:16:09 GMT 4
2.0.0-beta7-00362 96.06 KB Sat, 14 Dec 2019 14:53:38 GMT 3
2.0.0-beta7-00361 96.06 KB Sat, 14 Dec 2019 13:01:59 GMT 3
2.0.0-beta7-00360 95.03 KB Fri, 06 Dec 2019 15:45:16 GMT 2
2.0.0-beta6-00346 136.16 KB Thu, 28 Nov 2019 14:21:34 GMT 3
2.0.0-beta6-00343 136.28 KB Thu, 22 Aug 2019 13:34:56 GMT 4
2.0.0-beta6-00342 136.27 KB Thu, 22 Aug 2019 13:26:03 GMT 3
2.0.0-beta6-00341 136.28 KB Thu, 22 Aug 2019 13:23:16 GMT 2
2.0.0-beta6-00340 134.66 KB Thu, 15 Aug 2019 18:35:45 GMT 4
2.0.0-beta6-00339 134.67 KB Mon, 12 Aug 2019 22:05:00 GMT 1
2.0.0-beta6-00338 134.62 KB Sat, 10 Aug 2019 14:15:33 GMT 3
2.0.0-beta5-00337 134.62 KB Sat, 10 Aug 2019 14:14:44 GMT 2
2.0.0-beta5-00336 134.62 KB Sat, 10 Aug 2019 14:10:37 GMT 4
2.0.0-beta5-00335 134.6 KB Sat, 10 Aug 2019 13:28:47 GMT 3
2.0.0-beta5-00334 131.97 KB Sat, 10 Aug 2019 13:03:39 GMT 3
2.0.0-beta5-00333 131.35 KB Sat, 10 Aug 2019 12:35:03 GMT 4
2.0.0-beta5-00332 131.38 KB Sat, 10 Aug 2019 12:33:16 GMT 3
2.0.0-beta5-00331 130.71 KB Sat, 10 Aug 2019 12:07:50 GMT 3
2.0.0-beta5-00329 130.73 KB Sat, 10 Aug 2019 11:44:36 GMT 2
2.0.0-beta5-00328 127.73 KB Sat, 20 Jul 2019 09:01:01 GMT 3
2.0.0-beta5-00327 127.75 KB Tue, 02 Jul 2019 10:53:46 GMT 5
2.0.0-beta5-00326 127.73 KB Tue, 02 Jul 2019 10:52:54 GMT 2
2.0.0-beta5-00325 127.75 KB Tue, 02 Jul 2019 10:51:57 GMT 3
2.0.0-beta5-00324 127.74 KB Tue, 02 Jul 2019 10:51:05 GMT 3
2.0.0-beta5-00323 126.58 KB Sat, 13 Apr 2019 11:21:24 GMT 3
2.0.0-beta5-00322 126.26 KB Sat, 30 Mar 2019 16:38:38 GMT 3
2.0.0-beta5-00321 126.27 KB Sat, 30 Mar 2019 16:33:39 GMT 2
2.0.0-beta5-00320 126.27 KB Sat, 30 Mar 2019 16:27:38 GMT 3
2.0.0-beta5-00319 119.49 KB Thu, 28 Mar 2019 13:02:22 GMT 3
2.0.0-beta5-00317 119.49 KB Thu, 28 Mar 2019 12:57:34 GMT 2
2.0.0-beta5-00316 119.51 KB Thu, 28 Mar 2019 12:51:34 GMT 4
2.0.0-beta5-00315 119.48 KB Thu, 28 Mar 2019 12:32:22 GMT 4
2.0.0-beta5-00314 119.02 KB Thu, 28 Mar 2019 11:01:43 GMT 3
2.0.0-beta5-00313 119.56 KB Fri, 25 Jan 2019 19:50:22 GMT 4
2.0.0-beta4-00312 119.6 KB Fri, 25 Jan 2019 19:46:44 GMT 3
2.0.0-beta4-00311 119.61 KB Fri, 25 Jan 2019 19:41:36 GMT 3
2.0.0-beta4-00310 119.6 KB Fri, 25 Jan 2019 19:32:17 GMT 2
2.0.0-beta4-00309 119.76 KB Thu, 10 Jan 2019 11:00:12 GMT 4
2.0.0-beta4-00308 118.35 KB Thu, 06 Dec 2018 11:02:10 GMT 4
2.0.0-beta4-00307 119.5 KB Thu, 06 Dec 2018 08:33:12 GMT 4
2.0.0-beta4-00306 119 KB Sun, 02 Dec 2018 18:15:47 GMT 3
2.0.0-beta4-00305 119.01 KB Sun, 02 Dec 2018 18:14:24 GMT 4
2.0.0-beta4-00304 118.99 KB Fri, 30 Nov 2018 20:28:05 GMT 4
2.0.0-beta4-00303 119 KB Fri, 30 Nov 2018 20:22:27 GMT 4
2.0.0-beta4-00302 119.03 KB Sun, 18 Nov 2018 15:17:18 GMT 1
2.0.0-beta4-00301 117.95 KB Sat, 17 Nov 2018 14:49:07 GMT 4
2.0.0-beta4-00300 114.97 KB Fri, 16 Nov 2018 21:59:32 GMT 3
2.0.0-beta4 119.51 KB Fri, 25 Jan 2019 19:46:38 GMT 3
2.0.0-beta3-00299 188.63 KB Fri, 16 Nov 2018 20:28:45 GMT 4
2.0.0-beta3-00298 188.63 KB Thu, 15 Nov 2018 21:06:47 GMT 3
2.0.0-beta3-00288 178.24 KB Wed, 14 Nov 2018 10:56:07 GMT 5
2.0.0-beta3-00284 175.68 KB Tue, 13 Nov 2018 21:48:47 GMT 4
2.0.0-beta3-00283 175.6 KB Tue, 13 Nov 2018 21:41:11 GMT 3
2.0.0-beta3-00282 175.66 KB Tue, 13 Nov 2018 21:34:38 GMT 4
2.0.0-beta3-00281 175.57 KB Sat, 20 Oct 2018 14:13:27 GMT 4
2.0.0-beta3-00280 175.34 KB Sat, 20 Oct 2018 08:29:07 GMT 3
2.0.0-beta3-00279 172.41 KB Fri, 19 Oct 2018 15:28:15 GMT 4
2.0.0-beta2-00278 172.4 KB Fri, 19 Oct 2018 15:16:52 GMT 3
2.0.0-beta2-00277 172.41 KB Fri, 19 Oct 2018 15:12:20 GMT 4
2.0.0-beta2-00275 172.41 KB Fri, 19 Oct 2018 15:01:05 GMT 3
2.0.0-beta2-00272 165.25 KB Fri, 19 Oct 2018 09:48:40 GMT 2
2.0.0-beta2-00270 165.2 KB Fri, 19 Oct 2018 09:43:56 GMT 3
2.0.0-beta2-00268 165.4 KB Tue, 11 Sep 2018 21:52:01 GMT 3
2.0.0-beta2-00267 164.98 KB Mon, 09 Jul 2018 18:16:28 GMT 2
2.0.0-beta2-00265 101.63 KB Fri, 06 Jul 2018 14:15:44 GMT 3
2.0.0-beta2-00261 101.2 KB Wed, 28 Mar 2018 08:57:30 GMT 5
2.0.0-beta2-00260 100.99 KB Mon, 26 Mar 2018 20:23:19 GMT 3
2.0.0-beta2-00259 100.15 KB Mon, 26 Mar 2018 09:05:08 GMT 3