diff --git a/Data.sln b/Data.sln index 5fb8992..9bbf02b 100644 --- a/Data.sln +++ b/Data.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28010.2046 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29503.13 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PoweredSoft.Data.Core", "PoweredSoft.Data.Core\PoweredSoft.Data.Core.csproj", "{6C61F343-9634-40CD-AFC1-7C4C3FB4E524}" EndProject @@ -13,11 +13,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution README.md = README.md EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PoweredSoft.Data.EntityFrameworkCore.Test", "PoweredSoft.Data.EntityFrameworkCore.Test\PoweredSoft.Data.EntityFrameworkCore.Test.csproj", "{1F0B95F6-2E97-4FC2-A452-F8A071CBEF4B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PoweredSoft.Data", "PoweredSoft.Data\PoweredSoft.Data.csproj", "{62DDEA81-6B09-4116-A91B-81FE66AB477B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoweredSoft.Data", "PoweredSoft.Data\PoweredSoft.Data.csproj", "{62DDEA81-6B09-4116-A91B-81FE66AB477B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoweredSoft.Data.MongoDB", "PoweredSoft.Data.MongoDB\PoweredSoft.Data.MongoDB.csproj", "{34BED188-2B88-4CAD-8DD0-6FC70D156902}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PoweredSoft.Data.MongoDB", "PoweredSoft.Data.MongoDB\PoweredSoft.Data.MongoDB.csproj", "{34BED188-2B88-4CAD-8DD0-6FC70D156902}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -33,10 +31,6 @@ Global {78EEC90C-F2C3-4B59-93DA-DE22BFD1FD30}.Debug|Any CPU.Build.0 = Debug|Any CPU {78EEC90C-F2C3-4B59-93DA-DE22BFD1FD30}.Release|Any CPU.ActiveCfg = Release|Any CPU {78EEC90C-F2C3-4B59-93DA-DE22BFD1FD30}.Release|Any CPU.Build.0 = Release|Any CPU - {1F0B95F6-2E97-4FC2-A452-F8A071CBEF4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F0B95F6-2E97-4FC2-A452-F8A071CBEF4B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F0B95F6-2E97-4FC2-A452-F8A071CBEF4B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F0B95F6-2E97-4FC2-A452-F8A071CBEF4B}.Release|Any CPU.Build.0 = Release|Any CPU {62DDEA81-6B09-4116-A91B-81FE66AB477B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {62DDEA81-6B09-4116-A91B-81FE66AB477B}.Debug|Any CPU.Build.0 = Debug|Any CPU {62DDEA81-6B09-4116-A91B-81FE66AB477B}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/PoweredSoft.Data.Core/IDbContextFactory.cs b/PoweredSoft.Data.Core/IDbContextFactory.cs deleted file mode 100644 index 34f1295..0000000 --- a/PoweredSoft.Data.Core/IDbContextFactory.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; - -namespace PoweredSoft.Data.Core -{ - public interface IDbContextFactory - { - IQueryable GetQueryable() - where T : class; - - IQueryable GetQueryable(Type type); - void Add(object entity); - void Remove(object entity); - int SaveChanges(); - Task SaveChangesAsync(); - IEnumerable GetKeyProperties(Type entityType); - IEnumerable>> GetKeyProperties(); - } -} diff --git a/PoweredSoft.Data.Core/IDbContextFactoryProvider.cs b/PoweredSoft.Data.Core/IDbContextFactoryProvider.cs deleted file mode 100644 index 15a40c2..0000000 --- a/PoweredSoft.Data.Core/IDbContextFactoryProvider.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace PoweredSoft.Data.Core -{ - public interface IDbContextFactoryProvider - { - IDbContextFactory GetContextFactory(Type contextType); - } -} diff --git a/PoweredSoft.Data.Core/PoweredSoft.Data.Core.csproj b/PoweredSoft.Data.Core/PoweredSoft.Data.Core.csproj index 12f008f..fbc7ebb 100644 --- a/PoweredSoft.Data.Core/PoweredSoft.Data.Core.csproj +++ b/PoweredSoft.Data.Core/PoweredSoft.Data.Core.csproj @@ -9,7 +9,7 @@ https://github.com/PoweredSoft/Data github powered,soft,orm,db,context,ef,ef6,efcore,factory - 1.1.3 + 2.0.0 https://secure.gravatar.com/avatar/4e32f73820c16718909a06c2927f1f8b?s=512&amp;r=g&amp;d=retro PoweredSoft.Data.Core Library to abstract orm. diff --git a/PoweredSoft.Data.EntityFrameworkCore.Test/AsyncQueryableService.cs b/PoweredSoft.Data.EntityFrameworkCore.Test/AsyncQueryableService.cs deleted file mode 100644 index 2c4e4c2..0000000 --- a/PoweredSoft.Data.EntityFrameworkCore.Test/AsyncQueryableService.cs +++ /dev/null @@ -1,40 +0,0 @@ -using PoweredSoft.Test.Mock; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Xunit; - -namespace PoweredSoft.Data.EntityFrameworkCore.Test -{ - public class AsyncQueryableServiceTests - { - [Fact] - public void TestCanHandle() - { - MockContextFactory.SeedAndTestContextFor("AsyncQueryableServiceTests_TestCanHandle", TestSeeders.SimpleSeedScenario, ctx => - { - var test = new AsyncQueryableHandlerService(); - IQueryable query = ctx.Orders; - var query2 = query.GroupBy(t => t.Customer); - var query3 = query.Where(t => t.Customer.LastName == "David"); - - Assert.True(test.CanHandle(query)); - Assert.True(test.CanHandle(query2)); - Assert.True(test.CanHandle(query3)); - }); - } - - [Fact] - public void TestFirstOrDefault() - { - MockContextFactory.SeedAndTestContextFor("AsyncQueryableServiceTests_TestCanHandle", TestSeeders.SimpleSeedScenario, async ctx => - { - var handler = new AsyncQueryableHandlerService(); - var service = new AsyncQueryableService(new[] { handler }); - var first = await service.FirstOrDefaultAsync(ctx.Orders); - }); - } - } -} diff --git a/PoweredSoft.Data.EntityFrameworkCore.Test/CohabitTest.cs b/PoweredSoft.Data.EntityFrameworkCore.Test/CohabitTest.cs deleted file mode 100644 index 04f5540..0000000 --- a/PoweredSoft.Data.EntityFrameworkCore.Test/CohabitTest.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; -using Xunit; -using MongoDB.Driver; -using PoweredSoft.Test.Mock; -using PoweredSoft.Data.Core; -using System.Linq; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.DependencyInjection; -using PoweredSoft.Data.MongoDB; - -namespace PoweredSoft.Data.EntityFrameworkCore.Test -{ - public class CohabitTest - { - [Fact] - public void TestCohabitation() - { - var mongoHandler = new PoweredSoft.Data.MongoDB.AsyncQueryableHandlerService(); - var efCoreHandler = new PoweredSoft.Data.EntityFrameworkCore.AsyncQueryableHandlerService(); - var service = new PoweredSoft.Data.AsyncQueryableService(new IAsyncQueryableHandlerService[] { mongoHandler, efCoreHandler }); - - var mongoClient = new MongoClient(); - var db = mongoClient.GetDatabase("acme"); - var mongoOrders = db.GetCollection("orders").AsQueryable(); - - var options = new DbContextOptionsBuilder().UseInMemoryDatabase(databaseName: "CohabitTest_TestCohabitation").Options; - var context = new MockContext(options); - var set = context.Set(); - var efCoreOrders = set.AsQueryable(); - - var shouldBeMongoHandler = service.GetAsyncQueryableHandler(mongoOrders); - Assert.Equal(mongoHandler, shouldBeMongoHandler); - - var shouldBeEfCoreHandler = service.GetAsyncQueryableHandler(efCoreOrders); - Assert.Equal(efCoreHandler, shouldBeEfCoreHandler); - } - - - [Fact] - public void TestDI() - { - var services = new ServiceCollection(); - services.AddPoweredSoftEntityFrameworkCoreDataServices(); - services.AddPoweredSoftMongoDBDataServices(); - - var sp = services.BuildServiceProvider(); - - var result = sp.GetServices(); - var someService = sp.GetService(); - - Assert.Equal(2, result.Count()); - Assert.Equal(2, someService.Handlers.Count()); - } - } -} diff --git a/PoweredSoft.Data.EntityFrameworkCore.Test/DbContextFactoryPrimaryKeyTests.cs b/PoweredSoft.Data.EntityFrameworkCore.Test/DbContextFactoryPrimaryKeyTests.cs deleted file mode 100644 index 79fc463..0000000 --- a/PoweredSoft.Data.EntityFrameworkCore.Test/DbContextFactoryPrimaryKeyTests.cs +++ /dev/null @@ -1,37 +0,0 @@ -using PoweredSoft.Test.Mock; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Reflection; -using System.Text; -using Xunit; -using Xunit.Abstractions; - -namespace PoweredSoft.Data.EntityFrameworkCore.Test -{ - public class DbContextFactoryPrimaryKeyTests - { - private readonly ITestOutputHelper output; - - public DbContextFactoryPrimaryKeyTests(ITestOutputHelper output) - { - this.output = output; - } - - [Fact] - public void Simple() - { - MockContextFactory.SeedAndTestContextFor("DbContextFactoryPrimaryKeyTests_Simple", TestSeeders.SimpleSeedScenario, ctx => - { - var sw = new Stopwatch(); - sw.Start(); - var factory = new DbContextFactory(ctx); - var keys = factory.GetKeyProperties(typeof(Order)); - Assert.Single(keys, t => t.Name == "Id"); - sw.Stop(); - output.WriteLine($"Stop Watch of success took: {sw.Elapsed}"); - }); - } - } -} diff --git a/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/Entities.cs b/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/Entities.cs deleted file mode 100644 index aec7dd6..0000000 --- a/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/Entities.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace PoweredSoft.Test.Mock -{ - public class Order - { - public long Id { get; set; } - public long OrderNum { get; set; } - public DateTime Date { get; set; } - public long CustomerId { get; set; } - - public virtual Customer Customer { get; set; } - public ICollection OrderItems { get; set; } = new HashSet(); - } - - public class Customer - { - public long Id { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } - - - public ICollection Orders { get; set; } = new HashSet(); - } - - public class Item - { - public long Id { get; set; } - public string Name { get; set; } - public decimal Price { get; set; } - - public virtual ICollection OrderItems { get; set; } = new HashSet(); - } - - public class OrderItem - { - public long Id { get; set; } - public long Quantity { get; set; } - public decimal PriceAtTheTime { get; set; } - public long ItemId { get; set; } - public long OrderId { get; set; } - - public virtual Item Item { get; set; } - public virtual Order Order { get; set; } - } -} diff --git a/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/MockContext.cs b/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/MockContext.cs deleted file mode 100644 index 3e53ebd..0000000 --- a/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/MockContext.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Microsoft.EntityFrameworkCore; - -namespace PoweredSoft.Test.Mock -{ - public class MockContext : DbContext - { - public virtual DbSet Customers { get; set; } - public virtual DbSet Items { get; set; } - public virtual DbSet Orders { get; set; } - public virtual DbSet OrderItems { get; set; } - public virtual DbSet Tickets { get; set; } - - public MockContext() - { - - } - - public MockContext(DbContextOptions options) - : base(options) - { - - } - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - - } - } -} diff --git a/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/MockContextFactory.cs b/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/MockContextFactory.cs deleted file mode 100644 index cb569ae..0000000 --- a/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/MockContextFactory.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Microsoft.EntityFrameworkCore; -using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.ClientProtocol; -using Xunit.Sdk; - -namespace PoweredSoft.Test.Mock -{ - public static class MockContextFactory - { - public static void TestContextFor(string testName, Action action) - { - var options = new DbContextOptionsBuilder().UseInMemoryDatabase(databaseName: testName).Options; - using (var ctx = new MockContext(options)) - action(ctx); - } - - public static void SeedAndTestContextFor(string testName, Action seedAction, Action action) - { - seedAction(testName); - TestContextFor(testName, action); - } - } -} diff --git a/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/TestSeeders.cs b/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/TestSeeders.cs deleted file mode 100644 index fbd60b1..0000000 --- a/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/TestSeeders.cs +++ /dev/null @@ -1,139 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace PoweredSoft.Test.Mock -{ - public static class TestSeeders - { - public static void SimpleSeedScenario(string testName) - { - MockContextFactory.TestContextFor(testName, ctx => - { - ctx.AddRange(new Customer[] - { - new Customer() { Id = 1, FirstName = "David", LastName = "Lebee" }, - new Customer() { Id = 2, FirstName = "John", LastName = "Doe" }, - new Customer() { Id = 3, FirstName = "Chuck", LastName = "Norris" }, - new Customer() { Id = 4, FirstName = "Nelson", LastName = "Mendela" }, - new Customer() { Id = 5, FirstName = "Jimi", LastName = "Hendrix" }, - new Customer() { Id = 6, FirstName = "Axel", LastName = "Rose" }, - new Customer() { Id = 7, FirstName = "John", LastName = "Frusciante" }, - new Customer() { Id = 8, FirstName = "Michael", LastName = "Jackson" }, - new Customer() { Id = 9, FirstName = "Anita", LastName = "Franklin" }, - }); - - ctx.AddRange(new Item[] - { - new Item { Id = 1, Name = "Computer", Price = 1000M }, - new Item { Id = 2, Name = "Mice", Price = 25.99M }, - new Item { Id = 3, Name = "Keyboard", Price = 100M }, - new Item { Id = 4, Name = "Screen", Price = 499.98M }, - new Item { Id = 5, Name = "Printer", Price = 230.95M }, - new Item { Id = 6, Name = "HDMI Cables", Price = 20M }, - new Item { Id = 7, Name = "Power Cables", Price = 5.99M } - }); - - ctx.Orders.AddRange(new Order[] - { - new Order() - { - Id = 1, - OrderNum = 1000, - CustomerId = 1, - Date = new DateTime(2018, 1, 1), - OrderItems = new List() - { - new OrderItem() { Id = 1, ItemId = 1, PriceAtTheTime = 1000M, Quantity = 1 }, - new OrderItem() { Id = 2, ItemId = 2, PriceAtTheTime = 30M, Quantity = 1 }, - new OrderItem() { Id = 3, ItemId = 4, PriceAtTheTime = 399.99M, Quantity = 2 }, - new OrderItem() { Id = 4, ItemId = 6, PriceAtTheTime = 20, Quantity = 2 }, - new OrderItem() { Id = 8, ItemId = 6, PriceAtTheTime = 3.99M, Quantity = 3 } - } - }, - new Order() - { - Id = 2, - OrderNum = 1001, - CustomerId = 2, - Date = new DateTime(2018, 2, 1), - OrderItems = new List() - { - new OrderItem() { Id = 9, ItemId = 6, PriceAtTheTime = 20, Quantity = 2 }, - new OrderItem() { Id = 10, ItemId = 6, PriceAtTheTime = 3.99M, Quantity = 3 } - } - }, - new Order() - { - Id = 3, - OrderNum = 1002, - CustomerId = 3, - Date = new DateTime(2018, 2, 1), - OrderItems = new List() - { - new OrderItem() { Id = 11, ItemId = 5, PriceAtTheTime = 499.99M, Quantity = 1 }, - new OrderItem() { Id = 12, ItemId = 6, PriceAtTheTime = 20, Quantity = 1 }, - new OrderItem() { Id = 13, ItemId = 7, PriceAtTheTime = 3.99M, Quantity = 1 } - } - }, - new Order() - { - Id = 4, - OrderNum = 1003, - CustomerId = 1, - Date = new DateTime(2018, 3, 1), - OrderItems = new List() - { - new OrderItem() { Id = 14, ItemId = 2, PriceAtTheTime = 50M, Quantity = 1 }, - new OrderItem() { Id = 15, ItemId = 3, PriceAtTheTime = 75.50M, Quantity = 1 }, - } - } - }); - - ctx.SaveChanges(); - }); - } - - internal static void SeedTicketScenario(string testName) - { - MockContextFactory.TestContextFor(testName, ctx => - { - var faker = new Bogus.Faker() - .RuleFor(t => t.TicketType, (f, u) => f.PickRandom("new", "open", "refused", "closed")) - .RuleFor(t => t.Title, (f, u) => f.Lorem.Sentence()) - .RuleFor(t => t.Details, (f, u) => f.Lorem.Paragraph()) - .RuleFor(t => t.IsHtml, (f, u) => false) - .RuleFor(t => t.TagList, (f, u) => string.Join(",", f.Commerce.Categories(3))) - .RuleFor(t => t.CreatedDate, (f, u) => f.Date.Recent(100)) - .RuleFor(t => t.Owner, (f, u) => f.Person.FullName) - .RuleFor(t => t.AssignedTo, (f, u) => f.Person.FullName) - .RuleFor(t => t.TicketStatus, (f, u) => f.PickRandom(1, 2, 3)) - .RuleFor(t => t.LastUpdateBy, (f, u) => f.Person.FullName) - .RuleFor(t => t.LastUpdateDate, (f, u) => f.Date.Soon(5)) - .RuleFor(t => t.Priority, (f, u) => f.PickRandom("low", "medium", "high", "critical")) - .RuleFor(t => t.AffectedCustomer, (f, u) => f.PickRandom(true, false)) - .RuleFor(t => t.Version, (f, u) => f.PickRandom("1.0.0", "1.1.0", "2.0.0")) - .RuleFor(t => t.ProjectId, (f, u) => f.Random.Number(100)) - .RuleFor(t => t.DueDate, (f, u) => f.Date.Soon(5)) - .RuleFor(t => t.EstimatedDuration, (f, u) => f.Random.Number(20)) - .RuleFor(t => t.ActualDuration, (f, u) => f.Random.Number(20)) - .RuleFor(t => t.TargetDate, (f, u) => f.Date.Soon(5)) - .RuleFor(t => t.ResolutionDate, (f, u) => f.Date.Soon(5)) - .RuleFor(t => t.Type, (f, u) => f.PickRandom(1, 2, 3)) - .RuleFor(t => t.ParentId, () => 0) - .RuleFor(t => t.PreferredLanguage, (f, u) => f.PickRandom("fr", "en", "es")) - ; - - var fakeModels = new List(); - for (var i = 0; i < 500; i++) - { - var t = faker.Generate(); - t.TicketId = i + 1; - fakeModels.Add(t); - } - - ctx.AddRange(fakeModels); - ctx.SaveChanges(); - }); - } - } -} diff --git a/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/Ticket.cs b/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/Ticket.cs deleted file mode 100644 index cc954cb..0000000 --- a/PoweredSoft.Data.EntityFrameworkCore.Test/Mock/Ticket.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace PoweredSoft.Test.Mock -{ - public class Ticket - { - public int TicketId { get; set; } - public string TicketType { get; set; } - public string Title { get; set; } - public string Details { get; set; } - public bool IsHtml { get; set; } - public string TagList { get; set; } - public DateTimeOffset CreatedDate { get; set; } - public string Owner { get; set; } - public string AssignedTo { get; set; } - public int TicketStatus { get; set; } - public DateTimeOffset CurrentStatusDate { get; set; } - public string CurrentStatusSetBy { get; set; } - public string LastUpdateBy { get; set; } - public DateTimeOffset LastUpdateDate { get; set; } - public string Priority { get; set; } - public bool AffectedCustomer { get; set; } - public string Version { get; set; } - public int ProjectId { get; set; } - public DateTimeOffset DueDate { get; set; } - public decimal EstimatedDuration { get; set; } - public decimal ActualDuration { get; set; } - public DateTimeOffset TargetDate { get; set; } - public DateTimeOffset ResolutionDate { get; set; } - public int Type { get; set; } - public int ParentId { get; set; } - public string PreferredLanguage { get; set; } - } -} diff --git a/PoweredSoft.Data.EntityFrameworkCore.Test/PoweredSoft.Data.EntityFrameworkCore.Test.csproj b/PoweredSoft.Data.EntityFrameworkCore.Test/PoweredSoft.Data.EntityFrameworkCore.Test.csproj deleted file mode 100644 index d806dfa..0000000 --- a/PoweredSoft.Data.EntityFrameworkCore.Test/PoweredSoft.Data.EntityFrameworkCore.Test.csproj +++ /dev/null @@ -1,23 +0,0 @@ - - - - netcoreapp2.2 - - false - - - - - - - - - - - - - - - - - diff --git a/PoweredSoft.Data.EntityFrameworkCore/DbContextFactory.cs b/PoweredSoft.Data.EntityFrameworkCore/DbContextFactory.cs deleted file mode 100644 index 98093f8..0000000 --- a/PoweredSoft.Data.EntityFrameworkCore/DbContextFactory.cs +++ /dev/null @@ -1,67 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Internal; -using PoweredSoft.Data.Core; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; -using System.Reflection; -using System.Threading.Tasks; - -namespace PoweredSoft.Data.EntityFrameworkCore -{ - public class DbContextFactory : IDbContextFactory - { - private readonly DbContext _context; - - public DbContextFactory(DbContext dbContext) - { - _context = dbContext; - } - - public void Add(object entity) => _context.Add(entity); - - - - public IQueryable GetQueryable() where T : class => _context.Set(); - - public IQueryable GetQueryable(Type type) - { - var setSource = (IDbSetSource)this._context.GetType().GetProperty("SetSource", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(_context); - var ret = (IQueryable)((IDbSetCache)this).GetOrAddSet(setSource, type); - return ret; - } - - public void Remove(object entity) - { - _context.Remove(entity); - } - - public int SaveChanges() => _context.SaveChanges(); - public async Task SaveChangesAsync() => await _context.SaveChangesAsync(); - - public IEnumerable GetKeyProperties(Type entityType) - { - var key = _context.Model.FindEntityType(entityType).FindPrimaryKey(); - var keysProperties = key.Properties.Select(t => t.PropertyInfo); - return keysProperties; - } - - public IEnumerable>> GetKeyProperties() - { - var keyProps = GetKeyProperties(typeof(TEntity)); - - var parameter = Expression.Parameter(typeof(TEntity)); - var result = keyProps - .Select(keyProp => - { - var property = Expression.Property(parameter, keyProp); - var funcType = typeof(Expression>); - var lambda = Expression.Lambda(funcType, Expression.Convert(property, typeof(Object)), parameter); - return (Expression>)lambda; - }) - .ToList(); - return result; - } - } -} diff --git a/PoweredSoft.Data.EntityFrameworkCore/DbContextFactoryProvider.cs b/PoweredSoft.Data.EntityFrameworkCore/DbContextFactoryProvider.cs deleted file mode 100644 index 525f0ec..0000000 --- a/PoweredSoft.Data.EntityFrameworkCore/DbContextFactoryProvider.cs +++ /dev/null @@ -1,26 +0,0 @@ -using PoweredSoft.Data.Core; -using System; -using System.Collections.Generic; -using System.Text; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.EntityFrameworkCore; - -namespace PoweredSoft.Data.EntityFrameworkCore -{ - public class DbContextFactoryProvider : IDbContextFactoryProvider - { - private readonly IServiceProvider serviceProvider; - - public DbContextFactoryProvider(IServiceProvider serviceProvider) - { - this.serviceProvider = serviceProvider; - } - - public IDbContextFactory GetContextFactory(Type contextType) - { - var dbContext = this.serviceProvider.GetRequiredService(contextType) as DbContext; - var dbContextFactory = new DbContextFactory(dbContext); - return dbContextFactory; - } - } -} diff --git a/PoweredSoft.Data.EntityFrameworkCore/PoweredSoft.Data.EntityFrameworkCore.csproj b/PoweredSoft.Data.EntityFrameworkCore/PoweredSoft.Data.EntityFrameworkCore.csproj index 5d896e1..a015e34 100644 --- a/PoweredSoft.Data.EntityFrameworkCore/PoweredSoft.Data.EntityFrameworkCore.csproj +++ b/PoweredSoft.Data.EntityFrameworkCore/PoweredSoft.Data.EntityFrameworkCore.csproj @@ -1,7 +1,7 @@  - netcoreapp2.1 + netstandard2.1 True Powered Softwares Inc. MIT @@ -9,7 +9,7 @@ https://github.com/PoweredSoft/Data github powered,soft,orm,db,context,ef,ef6,efcore,factory - 1.1.3 + 2.0.0 https://secure.gravatar.com/avatar/4e32f73820c16718909a06c2927f1f8b?s=512&amp;r=g&amp;d=retro PoweredSoft.Data.EntityFrameworkCore the abstraction implementation for EF Core. @@ -21,7 +21,7 @@ - + diff --git a/PoweredSoft.Data.EntityFrameworkCore/ServiceCollectionExtensions.cs b/PoweredSoft.Data.EntityFrameworkCore/ServiceCollectionExtensions.cs index 6be3f91..cc863b3 100644 --- a/PoweredSoft.Data.EntityFrameworkCore/ServiceCollectionExtensions.cs +++ b/PoweredSoft.Data.EntityFrameworkCore/ServiceCollectionExtensions.cs @@ -12,7 +12,6 @@ namespace PoweredSoft.Data.EntityFrameworkCore public static IServiceCollection AddPoweredSoftEntityFrameworkCoreDataServices(this IServiceCollection services) { services.AddPoweredSoftDataServices(); - services.TryAddTransient(); services.AddTransient(); return services; } diff --git a/PoweredSoft.Data.MongoDB/PoweredSoft.Data.MongoDB.csproj b/PoweredSoft.Data.MongoDB/PoweredSoft.Data.MongoDB.csproj index ef34b59..521dcae 100644 --- a/PoweredSoft.Data.MongoDB/PoweredSoft.Data.MongoDB.csproj +++ b/PoweredSoft.Data.MongoDB/PoweredSoft.Data.MongoDB.csproj @@ -21,8 +21,8 @@ - - + + diff --git a/PoweredSoft.Data/PoweredSoft.Data.csproj b/PoweredSoft.Data/PoweredSoft.Data.csproj index f889ad6..9c87bad 100644 --- a/PoweredSoft.Data/PoweredSoft.Data.csproj +++ b/PoweredSoft.Data/PoweredSoft.Data.csproj @@ -9,7 +9,7 @@ https://github.com/PoweredSoft/Data github async,queryable,handler,service,di - 1.1.3 + 2.0.0 https://secure.gravatar.com/avatar/4e32f73820c16718909a06c2927f1f8b?s=512&amp;r=g&amp;d=retro PoweredSoft.Data Library to abstract orm. @@ -25,7 +25,7 @@ - +