From 9938cb7a73af2adb648b8fbdd782a5d821006a87 Mon Sep 17 00:00:00 2001 From: luboshl Date: Fri, 22 Jan 2016 01:27:00 +0100 Subject: [PATCH] Added feature: State interceptors with fluent API. - Allows user to intercept DbContext.ApplyChanges in order to specify the EntityState which should be applied to one or more entities. - Resolves issue #106. --- ...bleEntities.Client.Tests.Extensions.csproj | 26 +- .../packages.config | 11 +- .../TrackableEntities.Client.Tests.csproj | 26 +- .../packages.config | 11 +- .../NorthwindDbContextTests.cs | 23 +- .../StateChangeInterceptorTests.cs | 815 ++++++++++++++++++ .../StateInterceptorTests.cs | 105 +++ .../TrackableEntities.EF.5.Tests.csproj | 24 +- .../packages.config | 11 +- .../TrackableEntities.EF.6.Tests.csproj | 32 +- .../packages.config | 11 +- Source/TrackableEntities.EF.5/Constants.cs | 3 + .../DbContextExtensions.cs | 189 +++- .../RelationshipNotDeterminedException.cs | 21 + .../Exceptions/TrackableEntitiesException.cs | 40 + .../IStateInterceptor.cs | 26 + .../InterceptorExtensions.cs | 69 ++ .../TrackableEntities.EF.5/InterceptorPool.cs | 24 + .../RelationshipType.cs | 21 + .../StateChangeInterceptor.cs | 42 + .../TrackableEntities.EF.5.csproj | 7 + .../TrackableEntities.EF.6.csproj | 21 + Source/TrackableEntities.sln.DotSettings | 11 - 23 files changed, 1447 insertions(+), 122 deletions(-) create mode 100644 Source/Tests/TrackableEntities.EF.5.Tests/StateChangeInterceptorTests.cs create mode 100644 Source/Tests/TrackableEntities.EF.5.Tests/StateInterceptorTests.cs create mode 100644 Source/TrackableEntities.EF.5/Exceptions/RelationshipNotDeterminedException.cs create mode 100644 Source/TrackableEntities.EF.5/Exceptions/TrackableEntitiesException.cs create mode 100644 Source/TrackableEntities.EF.5/IStateInterceptor.cs create mode 100644 Source/TrackableEntities.EF.5/InterceptorExtensions.cs create mode 100644 Source/TrackableEntities.EF.5/InterceptorPool.cs create mode 100644 Source/TrackableEntities.EF.5/RelationshipType.cs create mode 100644 Source/TrackableEntities.EF.5/StateChangeInterceptor.cs delete mode 100644 Source/TrackableEntities.sln.DotSettings diff --git a/Source/Tests/TrackableEntities.Client.Tests.Extensions/TrackableEntities.Client.Tests.Extensions.csproj b/Source/Tests/TrackableEntities.Client.Tests.Extensions/TrackableEntities.Client.Tests.Extensions.csproj index dda0a2eb..b311b584 100644 --- a/Source/Tests/TrackableEntities.Client.Tests.Extensions/TrackableEntities.Client.Tests.Extensions.csproj +++ b/Source/Tests/TrackableEntities.Client.Tests.Extensions/TrackableEntities.Client.Tests.Extensions.csproj @@ -1,7 +1,6 @@  - - + Debug @@ -15,6 +14,8 @@ 512 ..\..\ true + + true @@ -50,12 +51,16 @@ ..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll True - - ..\..\packages\xunit.assert.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.assert.dll + + ..\..\packages\xunit.assert.2.1.0\lib\dotnet\xunit.assert.dll True - - ..\..\packages\xunit.extensibility.core.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.dll + + ..\..\packages\xunit.extensibility.core.2.1.0\lib\dotnet\xunit.core.dll + True + + + ..\..\packages\xunit.extensibility.execution.2.1.0\lib\net45\xunit.execution.desktop.dll True @@ -65,7 +70,9 @@ - + + Designer + @@ -92,10 +99,9 @@ - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - +