-
Notifications
You must be signed in to change notification settings - Fork 125
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Copy all RepoDb.MySql files into a new folder for MySqlConnector.
- Loading branch information
Showing
55 changed files
with
17,264 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
[![MySqlBuild](https://img.shields.io/appveyor/ci/mikependon/repodb-6adn4)](https://ci.appveyor.com/project/mikependon/repodb-6adn4) | ||
[![Home](https://img.shields.io/badge/home-github-important)](https://github.com/mikependon/RepoDb) | ||
[![Website](https://img.shields.io/badge/website-information-yellow)](http://repodb.net) | ||
[![GetStarted](https://img.shields.io/badge/tutorial-getstarted-blueviolet)](http://repodb.net/tutorial/get-started-mysql) | ||
[![MySqlVersion](https://img.shields.io/nuget/v/RepoDb.MySql)](https://www.nuget.org/packages/RepoDb.MySql) | ||
[![MySqlUnitTests](https://img.shields.io/appveyor/tests/mikependon/repodb-t2hy7?label=unit%20tests)](https://ci.appveyor.com/project/mikependon/repodb-t2hy7/build/tests) | ||
[![MySqlIntegrationTests](https://img.shields.io/appveyor/tests/mikependon/repodb-o4t48?label=integration%20tests)](https://ci.appveyor.com/project/mikependon/repodb-o4t48/build/tests) | ||
|
||
# RepoDb.MySql - a hybrid .NET ORM library for MySQL. | ||
|
||
RepoDb is an open-source .NET ORM that bridge the gaps between micro-ORMs and full-ORMs. It helps the developer to simplify the switch-over of when to use the BASIC and ADVANCE operations during the development. | ||
|
||
It is the best alternative ORM to both Dapper and EntityFramework. | ||
|
||
## Important Pages | ||
|
||
- [GitHub Home Page](https://github.com/mikependon/RepoDb) - to learn more about the core library. | ||
- [Website](http://repodb.net) - docs, features, classes, references, releases and blogs. | ||
|
||
## Community engagements | ||
|
||
- [GitHub](https://github.com/mikependon/RepoDb/issues) - for any issues, requests and problems. | ||
- [StackOverflow](https://stackoverflow.com/questions/tagged/repodb) - for any technical questions. | ||
- [Twitter](https://twitter.com/search?q=%23repodb) - for the latest news. | ||
- [Gitter Chat](https://gitter.im/RepoDb/community) - for direct and live Q&A. | ||
|
||
## Dependencies | ||
|
||
- [MySql.Data](https://www.nuget.org/packages/MySql.Data/) - the data provider used for MySql. | ||
- [RepoDb](https://www.nuget.org/packages/RepoDb/) - the core library of RepoDb. | ||
|
||
## License | ||
|
||
[Apache-2.0](http://apache.org/licenses/LICENSE-2.0.html) - Copyright © 2019 - Michael Camara Pendon | ||
|
||
-------- | ||
|
||
## Installation | ||
|
||
At the Package Manager Console, write the command below. | ||
|
||
```csharp | ||
> Install-Package RepoDb.MySql | ||
``` | ||
|
||
Or, visit our [installation](http://repodb.net/tutorial/installation) page for more information. | ||
|
||
## Get Started | ||
|
||
First, the bootstrapper must be initialized. | ||
|
||
```csharp | ||
RepoDb.MySqlBootstrap.Initialize(); | ||
``` | ||
|
||
**Note:** The call must be done once. | ||
|
||
After the bootstrap initialization, any library operation can then be called. | ||
|
||
Or, visit the official [get-started](http://repodb.net/tutorial/get-started-mysql) page for MySQL. | ||
|
||
### Query | ||
|
||
```csharp | ||
using (var connection = new MySqlConnection(ConnectionString)) | ||
{ | ||
var customer = connection.Query<Customer>(c => c.Id == 10045); | ||
} | ||
``` | ||
|
||
### Insert | ||
|
||
```csharp | ||
var customer = new Customer | ||
{ | ||
FirstName = "John", | ||
LastName = "Doe", | ||
IsActive = true | ||
}; | ||
using (var connection = new MySqlConnection(ConnectionString)) | ||
{ | ||
var id = connection.Insert<Customer>(customer); | ||
} | ||
``` | ||
|
||
### Update | ||
|
||
```csharp | ||
using (var connection = new MySqlConnection(ConnectionString)) | ||
{ | ||
var customer = connection.Query<Customer>(10045); | ||
customer.FirstName = "John"; | ||
customer.LastUpdatedUtc = DateTime.UtcNow; | ||
var affectedRows = connection.Update<Customer>(customer); | ||
} | ||
``` | ||
|
||
### Delete | ||
|
||
```csharp | ||
using (var connection = new MySqlConnection(ConnectionString)) | ||
{ | ||
var customer = connection.Query<Customer>(10045); | ||
var deletedCount = connection.Delete<Customer>(customer); | ||
} | ||
``` | ||
|
||
To learn more, please visit our [reference implementations](https://github.com/mikependon/RepoDb/blob/master/RepoDb.Docs/Reference%20Implementations.md) page. |
244 changes: 244 additions & 0 deletions
244
RepoDb.MySqlConnector/RepoDb.MySql.IntegrationTests/DbHelperTests.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,244 @@ | ||
using System; | ||
using System.Linq; | ||
using Microsoft.VisualStudio.TestTools.UnitTesting; | ||
using MySql.Data.MySqlClient; | ||
using RepoDb.MySql.IntegrationTests.Models; | ||
using RepoDb.MySql.IntegrationTests.Setup; | ||
|
||
namespace RepoDb.MySql.IntegrationTests | ||
{ | ||
[TestClass] | ||
public class DbHelperTests | ||
{ | ||
[TestInitialize] | ||
public void Initialize() | ||
{ | ||
Database.Initialize(); | ||
Cleanup(); | ||
} | ||
|
||
[TestCleanup] | ||
public void Cleanup() | ||
{ | ||
Database.Cleanup(); | ||
} | ||
|
||
#region GetFields | ||
|
||
#region Sync | ||
|
||
[TestMethod] | ||
public void TestDbHelperGetFields() | ||
{ | ||
using (var connection = new MySqlConnection(Database.ConnectionString)) | ||
{ | ||
// Setup | ||
var helper = connection.GetDbHelper(); | ||
|
||
// Act | ||
var fields = helper.GetFields(connection, "CompleteTable", null); | ||
|
||
// Assert | ||
using (var reader = connection.ExecuteReader(@"SELECT COLUMN_NAME AS ColumnName | ||
FROM INFORMATION_SCHEMA.COLUMNS | ||
WHERE | ||
TABLE_NAME = @TableName | ||
ORDER BY ORDINAL_POSITION;", new { TableName = "CompleteTable" })) | ||
{ | ||
var fieldCount = 0; | ||
|
||
while (reader.Read()) | ||
{ | ||
var name = reader.GetString(0); | ||
var field = fields.FirstOrDefault(f => string.Equals(f.Name, name, StringComparison.OrdinalIgnoreCase)); | ||
|
||
// Assert | ||
Assert.IsNotNull(field); | ||
|
||
fieldCount++; | ||
} | ||
|
||
// Assert | ||
Assert.AreEqual(fieldCount, fields.Count()); | ||
} | ||
} | ||
} | ||
|
||
[TestMethod] | ||
public void TestDbHelperGetFieldsPrimary() | ||
{ | ||
using (var connection = new MySqlConnection(Database.ConnectionString)) | ||
{ | ||
// Setup | ||
var helper = connection.GetDbHelper(); | ||
|
||
// Act | ||
var fields = helper.GetFields(connection, "CompleteTable", null); | ||
var primary = fields.FirstOrDefault(f => f.IsPrimary == true); | ||
|
||
// Assert | ||
Assert.IsNotNull(primary); | ||
Assert.AreEqual("Id", primary.Name); | ||
} | ||
} | ||
|
||
[TestMethod] | ||
public void TestDbHelperGetFieldsIdentity() | ||
{ | ||
using (var connection = new MySqlConnection(Database.ConnectionString)) | ||
{ | ||
// Setup | ||
var helper = connection.GetDbHelper(); | ||
|
||
// Act | ||
var fields = helper.GetFields(connection, "CompleteTable", null); | ||
var primary = fields.FirstOrDefault(f => f.IsIdentity == true); | ||
|
||
// Assert | ||
Assert.IsNotNull(primary); | ||
Assert.AreEqual("Id", primary.Name); | ||
} | ||
} | ||
|
||
#endregion | ||
|
||
#region Async | ||
|
||
[TestMethod] | ||
public void TestDbHelperGetFieldsAsync() | ||
{ | ||
using (var connection = new MySqlConnection(Database.ConnectionString)) | ||
{ | ||
// Setup | ||
var helper = connection.GetDbHelper(); | ||
|
||
// Act | ||
var fields = helper.GetFieldsAsync(connection, "CompleteTable", null).Result; | ||
|
||
// Assert | ||
using (var reader = connection.ExecuteReader(@"SELECT COLUMN_NAME AS ColumnName | ||
FROM INFORMATION_SCHEMA.COLUMNS | ||
WHERE | ||
TABLE_NAME = @TableName | ||
ORDER BY ORDINAL_POSITION;", new { TableName = "CompleteTable" })) | ||
{ | ||
var fieldCount = 0; | ||
|
||
while (reader.Read()) | ||
{ | ||
var name = reader.GetString(0); | ||
var field = fields.FirstOrDefault(f => string.Equals(f.Name, name, StringComparison.OrdinalIgnoreCase)); | ||
|
||
// Assert | ||
Assert.IsNotNull(field); | ||
|
||
fieldCount++; | ||
} | ||
|
||
// Assert | ||
Assert.AreEqual(fieldCount, fields.Count()); | ||
} | ||
} | ||
} | ||
|
||
[TestMethod] | ||
public void TestDbHelperGetFieldsAsyncPrimary() | ||
{ | ||
using (var connection = new MySqlConnection(Database.ConnectionString)) | ||
{ | ||
// Setup | ||
var helper = connection.GetDbHelper(); | ||
|
||
// Act | ||
var fields = helper.GetFieldsAsync(connection, "CompleteTable", null).Result; | ||
var primary = fields.FirstOrDefault(f => f.IsPrimary == true); | ||
|
||
// Assert | ||
Assert.IsNotNull(primary); | ||
Assert.AreEqual("Id", primary.Name); | ||
} | ||
} | ||
|
||
[TestMethod] | ||
public void TestDbHelperGetFieldsAsyncIdentity() | ||
{ | ||
using (var connection = new MySqlConnection(Database.ConnectionString)) | ||
{ | ||
// Setup | ||
var helper = connection.GetDbHelper(); | ||
|
||
// Act | ||
var fields = helper.GetFieldsAsync(connection, "CompleteTable", null).Result; | ||
var primary = fields.FirstOrDefault(f => f.IsIdentity == true); | ||
|
||
// Assert | ||
Assert.IsNotNull(primary); | ||
Assert.AreEqual("Id", primary.Name); | ||
} | ||
} | ||
|
||
#endregion | ||
|
||
#endregion | ||
|
||
#region GetScopeIdentity | ||
|
||
#region Sync | ||
|
||
[TestMethod] | ||
public void TestDbHelperGetScopeIdentity() | ||
{ | ||
using (var connection = new MySqlConnection(Database.ConnectionString)) | ||
{ | ||
// Setup | ||
var helper = connection.GetDbHelper(); | ||
var table = Helper.CreateCompleteTables(1).First(); | ||
|
||
// Act | ||
var insertResult = connection.Insert<CompleteTable>(table); | ||
|
||
// Assert | ||
Assert.IsTrue(Convert.ToInt64(insertResult) > 0); | ||
Assert.IsTrue(table.Id > 0); | ||
|
||
// Act | ||
var result = helper.GetScopeIdentity(connection, null); | ||
|
||
// Assert | ||
Assert.AreEqual(insertResult, result); | ||
} | ||
} | ||
|
||
#endregion | ||
|
||
#region Async | ||
|
||
[TestMethod] | ||
public void TestDbHelperGetScopeIdentityAsync() | ||
{ | ||
using (var connection = new MySqlConnection(Database.ConnectionString)) | ||
{ | ||
// Setup | ||
var helper = connection.GetDbHelper(); | ||
var table = Helper.CreateCompleteTables(1).First(); | ||
|
||
// Act | ||
var insertResult = connection.Insert<CompleteTable>(table); | ||
|
||
// Assert | ||
Assert.IsTrue(Convert.ToInt64(insertResult) > 0); | ||
Assert.IsTrue(table.Id > 0); | ||
|
||
// Act | ||
var result = helper.GetScopeIdentityAsync(connection, null).Result; | ||
|
||
// Assert | ||
Assert.AreEqual(insertResult, result); | ||
} | ||
} | ||
|
||
#endregion | ||
|
||
#endregion | ||
} | ||
} |
Oops, something went wrong.