{"id":19992219,"url":"https://github.com/Oceania2018/EntityFrameworkCore.BootKit","last_synced_at":"2025-05-04T11:30:46.823Z","repository":{"id":47134136,"uuid":"113796287","full_name":"Oceania2018/EntityFrameworkCore.BootKit","owner":"Oceania2018","description":"EntityFrameworkCore Start Kit","archived":false,"fork":false,"pushed_at":"2025-03-07T17:35:17.000Z","size":110,"stargazers_count":37,"open_issues_count":1,"forks_count":10,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-26T09:44:16.536Z","etag":null,"topics":["aurora","database","entityframework","postgres","redshift"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Oceania2018.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-11T00:59:17.000Z","updated_at":"2025-03-07T17:35:20.000Z","dependencies_parsed_at":"2024-04-13T16:25:08.977Z","dependency_job_id":"094b8645-9b03-45d5-b446-424066956a75","html_url":"https://github.com/Oceania2018/EntityFrameworkCore.BootKit","commit_stats":{"total_commits":86,"total_committers":5,"mean_commits":17.2,"dds":"0.15116279069767447","last_synced_commit":"3b944fa9d8b5af13a0d1e3e05f09d8e87e659a49"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oceania2018%2FEntityFrameworkCore.BootKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oceania2018%2FEntityFrameworkCore.BootKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oceania2018%2FEntityFrameworkCore.BootKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oceania2018%2FEntityFrameworkCore.BootKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Oceania2018","download_url":"https://codeload.github.com/Oceania2018/EntityFrameworkCore.BootKit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252329150,"owners_count":21730557,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aurora","database","entityframework","postgres","redshift"],"created_at":"2024-11-13T04:52:05.231Z","updated_at":"2025-05-04T11:30:44.066Z","avatar_url":"https://github.com/Oceania2018.png","language":"C#","funding_links":[],"categories":["C\\#"],"sub_categories":[],"readme":"# EntityFrameworkCore.BootKit\nn']\n[![Join the chat at https://gitter.im/publiclab/publiclab](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/sci-sharp/community) [![Documentation Status](https://readthedocs.org/projects/entityframeworkcorebootkit/badge/?version=latest)](https://tensorflownet.readthedocs.io/en/latest/?badge=latest) [![NuGet](https://img.shields.io/nuget/dt/EntityFrameworkCore.BootKit.svg)](https://www.nuget.org/packages/EntityFrameworkCore.BootKit)\n\nEntityFrameworkCore Boot Kit (EFBK) is a quick start database connect library for using .NET EntityFrameworkCore.\n\n### Features:\n\n* Inherits from EntityFrameworkCore Triggers to enable entries update notfication.\n* Support mulitple databases like MySql, SQL Server, Sqlite, PostgreSql, MongoDB, Amazon Redshift, AWS Aurora and InMemory.\n* Support dynamic linq to query and update database.\n* Support read/write seperated mode. Randomly choose multiple slaves.\n* Multiple database with distributed transaction supported, and MySQL multiple databases/tables sharding supported.\n* Tracking entry change history.\n* Built-in DbFactory with access control list (ACL) hook.\n\n### Get started\n\nHow to install\n\n```sh\nPM\u003e Install-Package EntityFrameworkCore.BootKit\n```\n\nHow to use\n\n1. Define entity\n\n\n```cs\n  public class PizzaOrder : DbRecord, IDbRecord\n  {\n\t[MaxLength(32)]\n\tpublic String OrderNumber { get; set; } \n\n\t[MaxLength(64)]\n\tpublic String CustomerName { get; set; }\n\t\n\t[Required]\n\tpublic DateTime CreatedTime { get; set; }\n\t\n\t[ForeignKey(\"OrderId\")]\n\tpublic List\u003cPizzaType\u003e PizzaTypes { get; set; }\n  }\n```\n\n2. Init data context\n\n```cs\n  var db = new Database();\n  AppDomain.CurrentDomain.SetData(\"Assemblies\", new string[] { \"EntityFrameworkCore.BootKit.UnitTest\" });\n\n  // bind as much data context as you can\n  db.BindDbContext\u003cIDbRecord, DbContext4Sqlite\u003e(new DatabaseBind\n  {\n\tMasterConnection = new SqliteConnection($\"Data Source={Directory.GetCurrentDirectory()}\\\\..\\\\..\\\\..\\\\..\\\\bootkit.db\"),\n\tCreateDbIfNotExist = true\n  });\n\n  db.BindDbContext\u003cIDbRecord, DbContext4PostgreSql\u003e(new DatabaseBind\n  {\n      MasterConnection = new NpgsqlConnection(\"Server=; Port=5439;User ID=;Password=;Database=;SSL Mode=Require;Trust Server Certificate=True;Use SSL Stream=True\"),\n  });\n```\n\n3. Retrieve record\n\n```cs\n  var order = db.Table\u003cPizzaOrder\u003e().Include(x =\u003e x.PizzaTypes).FirstOrDefault();\n```\n\n4. Retrieve record by table name\n\n```cs\n  var table = db.Table(\"PizzaOrder\");\n  var pizzaOrder = table.First() as PizzaOrder;\n```\n\n5. Update record in transaction\n\n```cs\n  int row = db.DbTran(() =\u003e\n  {\n    var po = db.Table\u003cPizzaOrder\u003e().Find(PIZZA_ORDER_ID);\n    po.CreatedTime = DateTime.UtcNow\n  });\n```\n\n6. Update record in Patch function\n\n```cs\n  int row = db.DbTran(() =\u003e\n  {\n\tvar patch = new DbPatchModel\n\t{\n\t\tTable = \"PizzaOrder\",\n\t\tId = PIZZA_ORDER_ID\n\t};\n\n\tpatch.Values.Add(\"CreatedTime\", dt);\n\tdb.Patch\u003cIDbRecord\u003e(patch);\n  });\n```\n\n7. Implement IRequireDbPermission to interupt update\n8. View raw sql\n\n```cs\n  string sql = table.ToSql();\n```\n\n9. Added MongoDb support\n\n```cs\n  db.BindDbContext\u003cIDbRecord, DbContext4MongoDb\u003e(new DatabaseBind\n  {\n\tMasterConnection = new MongoDbConnection(\"mongodb://user:password@localhost:27017/db\"),\n  });\n  var collection = db.Collection\u003cMongoDbCollectionTest\u003e().FirstOrDefault();\n\n  // Add new record\n  db.Collection\u003cMongoDbCollection\u003e().InsertOne(new MongoDbCollection\n  {\n    Id = Guid.NewGuid().ToString(),\n    Name = \"Pizza\"\n  });\n\n  // Update record\n  db.Collection\u003cMongoDbCollection\u003e().UpdateOne(x =\u003e x.Name == \"Pizza\", x =\u003e x.Name, \"Pizza 2\");\n```\n\n10. Support Amazon Redshift\n\n```cs\n  db.BindDbContext\u003cIDbRecord, DbContext4Redshift\u003e(new DatabaseBind\n  {\n      string connString = \"Server=*.us-east-1.redshift.amazonaws.com; Port=5439;User ID=;Password=;Database=;Server Compatibility Mode=Redshift;SSL Mode=Require;Trust Server Certificate=True;Use SSL Stream=True\";\n      MasterConnection = new NpgsqlConnection(connString),\n  });\n```\n\n### Documentation\n\nhttps://entityframeworkcorebootkit.readthedocs.io\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOceania2018%2FEntityFrameworkCore.BootKit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FOceania2018%2FEntityFrameworkCore.BootKit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOceania2018%2FEntityFrameworkCore.BootKit/lists"}