Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BeginEdit Throws Exception When Using MobileFormatter in .NET Framework #1080

Closed
b-higginbotham opened this issue Mar 11, 2019 · 13 comments
Closed
Assignees
Labels

Comments

@b-higginbotham
Copy link
Contributor

Describe the bug
When setting the "CslaSerializationFormatter" to "MobileFormatter" on a .NET Framework client, any call to the BeginEdit method of UndoableBase throws an exception.

Version and Platform
CSLA version: 4.9.0
OS: Windows 10
Platform: WPF

Code that Fails
FieldDataManager.cs Line 525: formatter.Serialize(buffer, state);
MobileFormatter.cs Line 137: if (!(obj is IMobileObject mobile))

Additional context
Method calls that trigger this behavior:
ViewModelBase.cs Line 148: undo.BeginEdit();
BusinessBase.cs Line 891: CopyState(this.EditLevel + 1);
UndoableBase.cs Line 468: ((Core.IUndoableObject)value).CopyState(this.EditLevel + 1, BindingEdit);

Some additional considerations:
The implementations of IUndoableBase that I have examined treat only properties/fields that implement IUndoableBase as child objects. The MobileFormatter implementation treats any object that implements IMobileObject as a child object when passing it to the CslaWriter.
When trying to troubleshoot this issue with a local copy of the code, I ran into an issue where the CslaBinaryWriter would fall through to CslaBinaryWriter.cs Line 216: throw new NotSupportedException(Resources.BinaryWriterObjectSerializationException);

Most of the business objects in my project use a struct to provide additional context for GUIDs. This struct implements IMobileObject to allow the business objects to be serializable using the MobileFormatter. When I ran into the discrepancy in how a child object is defined, I decided it would be best to leave this one to the experts.

@rockfordlhotka
Copy link
Member

A struct can't actually implement IMobileObject, because a struct doesn't have methods. There's no support for serializing value types (like a struct) in MobileFormatter (other than the standard primitive value types like int, double, etc.).

If you are going to use MobileFormatter you must live within its limitations.

@b-higginbotham
Copy link
Contributor Author

Rocky,

Did you even read the entire post or did you just skip to the part you didn't like?

The comment about the struct was listed as an additional consideration, not the source of the problem. The problem is that FieldDataManager tries to serialize an array of IFieldData when serialized using .NET Framework. The type IFieldData[] does not implement IMobileObject and thus throws an exception when using the MobileFormatter. This is a bug.

For what it's worth though, I had zero issues implementing the IMobileObject interface on this struct and serializing and deserializing it using the MobileFormatter. I'm not sure why you jumped on this to dismiss the entire issue.

@GillesBer
Copy link
Contributor

Hi @Hadronicus ,

I had zero issues implementing the IMobileObject interface on this struct

Did deserialization work?
I would expect it to behave unexpectedly, ie such as https://blogs.msdn.microsoft.com/abhinaba/2005/10/05/c-structs-and-interface/

@b-higginbotham
Copy link
Contributor Author

@GillesBer

Deserialization works fine. I created a repo with a simple demonstration that can be found here.

@rockfordlhotka
Copy link
Member

rockfordlhotka commented Mar 11, 2019

I'm pretty sure the issue in your sample code is because MobileFormatter can't serialize a custom enum. Your GetState/SetState code needs to convert/parse the value as a string.

So you are right - the struct is a red herring - it is the enum that's the issue.

Update: Nope, enums work too.

I'm trying to base some unit tests on your sample repro - thus far unsuccessful. I'll check it into a branch so you can collaborate and help me figure out what I'm doing that isn't triggering your issue.

See the commit (c68235e) to review the new unit test code I've added trying to replicate your issue.

rockfordlhotka added a commit to rockfordlhotka/csla that referenced this issue Mar 11, 2019
@b-higginbotham
Copy link
Contributor Author

b-higginbotham commented Mar 11, 2019

I've added two ways to reproduce the original issue. One is a bare bones project that I hosted here.

I was also able to reproduce it using the ProjectTracker sample, but it required a little manipulation because the App.config file still has a reference to MobileProxy which was removed.

ProjectTracker Reproduction Steps

  1. Add reference to ProjectTracker.DalMock to ProjectTracker.Ui.WPF. Note: I just wanted to set the project to use the local Data Portal for a quick setup, I was having trouble getting the proxy to communicate with the app server host project.
  2. Replace the contents of the App.config file in the .\Samples\ProjectTracker\ProjectTracker.Ui.WPF directory with the following code:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <appSettings>
  <add key="DalManagerType" value="ProjectTracker.DalMock.DalManager,ProjectTracker.DalMock" />
  <add key="CslaSerializationFormatter" value="MobileFormatter"/>
 </appSettings>
 <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/></startup>
</configuration>
  1. Build and launch ProjectTracker.Ui.WPF.
  2. Log in as Username: manager Password: manager.
  3. Click on Project List.
  4. Click the Edit button for the first entry in the list.

Resulting Call Stack

Edit: I forgot to include the actual exception.

System.InvalidOperationException: 'Type IFieldData[] must implement IMobileObject'
   at Csla.Serialization.Mobile.MobileFormatter.SerializeObject(Object obj) in E:\src\rdl\csla\Source\Csla.Shared\Serialization\Mobile\MobileFormatter.cs:line 138
   at Csla.Serialization.Mobile.MobileFormatter.SerializeAsDTO(Object graph) in E:\src\rdl\csla\Source\Csla.Shared\Serialization\Mobile\MobileFormatter.cs:line 63
   at Csla.Serialization.Mobile.MobileFormatter.Serialize(Stream serializationStream, Object graph) in E:\src\rdl\csla\Source\Csla.Shared\Serialization\Mobile\MobileFormatter.cs:line 48
   at Csla.Core.FieldManager.FieldDataManager.Csla.Core.IUndoableObject.CopyState(Int32 parentEditLevel, Boolean parentBindingEdit) in E:\src\rdl\csla\Source\Csla.Shared\Core\FieldManager\FieldDataManager.cs:line 525
   at Csla.Core.UndoableBase.CopyState(Int32 parentEditLevel) in E:\src\rdl\csla\Source\Csla.Shared\Core\UndoableBase.cs:line 468
   at Csla.Core.UndoableBase.Csla.Core.IUndoableObject.CopyState(Int32 parentEditLevel, Boolean parentBindingEdit) in E:\src\rdl\csla\Source\Csla.Shared\Core\UndoableBase.cs:line 400
   at Csla.BusinessListBase`2.CopyState(Int32 parentEditLevel) in E:\src\rdl\csla\Source\Csla.Shared\BusinessListBase.cs:line 515
   at Csla.BusinessListBase`2.Csla.Core.IUndoableObject.CopyState(Int32 parentEditLevel, Boolean parentBindingEdit) in E:\src\rdl\csla\Source\Csla.Shared\BusinessListBase.cs:line 480
   at Csla.Core.FieldManager.FieldDataManager.Csla.Core.IUndoableObject.CopyState(Int32 parentEditLevel, Boolean parentBindingEdit) in E:\src\rdl\csla\Source\Csla.Shared\Core\FieldManager\FieldDataManager.cs:line 509
   at Csla.Core.UndoableBase.CopyState(Int32 parentEditLevel) in E:\src\rdl\csla\Source\Csla.Shared\Core\UndoableBase.cs:line 468
   at Csla.Core.BusinessBase.BeginEdit() in E:\src\rdl\csla\Source\Csla.Shared\Core\BusinessBase.cs:line 891
   at Csla.Xaml.ViewModelBase`1.<>c.<.cctor>b__111_0(DependencyObject o, DependencyPropertyChangedEventArgs e) in E:\src\rdl\csla\Source\Csla.Xaml.Shared\ViewModelBase.cs:line 143
   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
   at Csla.Xaml.ViewModelBase`1.set_Model(T value) in E:\src\rdl\csla\Source\Csla.Xaml.Shared\ViewModelBase.cs:line 162
   at WpfUI.ViewModels.ProjectGetter.ProjectEdit..ctor(ProjectGetter parent, ProjectEdit project) in D:\csla-master\Samples\ProjectTracker\ProjectTracker.Ui.WPF\ViewModels\ProjectEdit.cs:line 62
   at WpfUI.ViewModels.ProjectGetter.get_ProjectEditViewModel() in D:\csla-master\Samples\ProjectTracker\ProjectTracker.Ui.WPF\ViewModels\ProjectEdit.cs:line 39

@rockfordlhotka
Copy link
Member

rockfordlhotka commented Mar 12, 2019 via email

@b-higginbotham
Copy link
Contributor Author

I think I chose the title poorly and it’s causing some confusion. The unit tests that you created are based on the sample I made to demonstrate that the MobileFormatter can successfully serializer and deserialize a custom struct I’m response to @GillesBer’s question.

The problem that I am seeing is similar to the issue described in #897, but for different reasons under different conditions. The code in the the two reproduction steps that I listed in my previous post would be a better starting point for a unit test to target this issue.

@b-higginbotham
Copy link
Contributor Author

Rocky,

I am new to Git and GitHub, so I'm sorry if I didn't get this part 100% correct, but I forked the CSLA repository and created a branch with a unit test that fails for the exact issue that I'm experiencing. Take a look at it here 950f5d5.

b-higginbotham added a commit to b-higginbotham/csla that referenced this issue Mar 12, 2019
Added unit test for BeginEdit while using MobileFormatter.
@b-higginbotham b-higginbotham changed the title MobileFormatter Unusable in .NET Framework BeginEdit Throws Exception When Using MobileFormatter in .NET Framework Mar 18, 2019
@b-higginbotham
Copy link
Contributor Author

I have looked into multiple ways of trying to solve this issue, and I ultimately came up with one that is actually quite simple, but I want to explain the thought process here to provide context to why I chose the solution that I did.

Considerations

  1. CSLA for the full .NET Framework currently has no issues with serializing objects that are not compatible with the MobileFormatter. I believe it is critical to make sure this behavior remains intact.
  2. I wanted to minimize any changes to the size and shape of the serialized payload of CSLA business objects. Any significant changes to the shape of the payload could cause potential compatibility issues. Any significant changes to the size of the payload could potentially cause performance issues.
  3. I wanted to ensure that the BeginEdit, UndoChanges, and ApplyChanges methods would work with types that implement IMobileObject but not IUndoableObject. An example of this would be the custom struct described in the discussion above. This may be a detail that is only important to my specific project, but, at least in my case, it is definitely important.

Assumptions

  • The serialized data for n-level undo never crosses a data portal boundary.
    • This is a critical assumption for the solution that I implemented because this solution cannot guarantee this if the state stack data crosses a data portal boundary because there's no guarantee that the process on the other side of the data portal can deserialize it.
    • After thorough examination of the CSLA source code, I believe this to be a safe assumption, and in certain cases, it is an explicit guarantee based on the implementation of IMobileObject in some of the affected classes.

Unsuccessful Approaches

  1. Copy the code from the .NET standard implementation of IUndoableObject.CopyState on the FieldDataManager class. However, this was not viable because it would fail the first consideration.
  2. Modify the FieldDataManager to serialize IFieldData objects using a MobileList or MobileDictionary rather than IFieldData[]. Doing this directly is not viable because IFieldData does not enforce the implementation of IMobileObject. The alternative would have been to serialize the raw data values from IFieldData. However, this approach, and every other option that I looked into ultimately came down to the same problem.
    • The type parameter for MobileList or MobileDictionary would need to be something that is generic enough to support all value types that may be passed into it. The only two candidates are IMobileObject, which fails the first consideration or System.Object.
    • System.Object immediately fails the third consideration because any type that implements IMobileObject will fail when be passed to the CslaBinaryWriter.
    • System.Object ultimately fails the second consideration as well because it would require additional type information to be serialized with the data in order to ensure proper handling during deserialization. This likely would have required rewriting large portions of code in FieldDataManager, UndoableBase, as well as the MobileFormatter itself and possibly the CslaBinaryWriter and CslaBinaryReader. None of that sounds particularly appealing because that would introduce a huge amount of volatility and likely some breaking changes.

Occam's Razor
After getting deep into the weeds researching these unsuccessful approaches, I eventually realized that the simplest solution to the problem is to have the FielDataManager and UndoableBase do exactly what they've been doing successfully for years in the full .NET Framework.

I created a new method on the SerializationFormatterFactory called GetNativeFormatter. The purpose of this method is to provide a formatter that can be used for serialization and deserialization in a format that is native to the environment in which a given process is running. In other words, Android, iOS, net-core, etc. processes will all use the MobileFormatter and .NET Framework processes will use the NetDataContractSerializerWrapper.

This is why the Data Portal boundary assumption is critical. As long as we are not trying to do a BeginEdit in one process and then an UndoChanges in another process on the other side of a data portal, this solution will remain completely transparent to any calling code. In my description of this assumption, I mentioned that in at least one place in the CSLA code, there is an explicit guarantee that this assumption would be correct. That occurs in the OnSetState implementation in UndoableBase. Because, this method explicitly clears the state stack during deserialization, it is guaranteed that the state cannot be undone on the other side of a Data Portal boundary when using the MobileFormatter.

We do not quite have the same level of guarantee when using other implementations of ISerializationFormatter. This does leave us with one potential breaking change if all of the following conditions are true:

  • A project is using a custom implementation of ISerializationFormatter for data portal calls and
  • the project is using a data portal proxy and
  • the data portal client and server processes are using different versions of .NET (i.e. core vs framework) and
  • the project is calling BeginEdit on one side of the Data Portal and UndoChanges on the other side.

A bonus bug
While testing the fix for the serialization problem, I came across an additional issue with the logic in the DoSave method of the ViewModelBase. When saving a business object with a child collection that inherits from BusinessListBase, the DoSave method would throw an exception for an edit level mismatch between the parent object and the child list. The root cause of this issue is the explicit guarantee for the data portal assumption that I described above. When deserializing and object that inherits from UndoableBase using the MobileFormatter, the state stack is explicitly cleared. When checking the edit level for UndoableBase, it simply returns the current count from the state stack. This will always be 0 after deserialization. However, BusinessListBase stores an explicit value for its edit level and this value is explicitly preserved through serialization and deserialization. I added an additional unit test to the ViewModelTests to demonstrate this behavior.

To resolve this issue, I modified BusinessListBase to no longer serialize this value and to explicitly default it to 0 in the implementation of OnSetState to match the behavior of UndoableBase.

@rockfordlhotka
Copy link
Member

rockfordlhotka commented Mar 18, 2019

This is a great amount of work, research, and detail, thank you!

A question/concern I have is that it sounds like this leaves the existing bug/issue intact on Android and other platforms - presumably your unit test code would still fail there because all other platforms would still use MobileFormatter as their native serializer?

@b-higginbotham
Copy link
Contributor Author

The source of the bug was code that was specific to the .NET Framework platform. With the exception to the removal of the edit level from the data serialized in BusinessListBase, the rest of the changes I made would not even be compiled when targeting other platforms. Anything that uses the MobileFormatter by default already has a working implementation and didn't need any attention as far as I could tell.

@rockfordlhotka rockfordlhotka added this to To do in Version 5.0.0 via automation Mar 19, 2019
@rockfordlhotka rockfordlhotka moved this from To do to In progress in Version 5.0.0 Mar 19, 2019
Version 5.0.0 automation moved this from In progress to Done Mar 20, 2019
Troncho added a commit to Troncho/csla that referenced this issue Aug 6, 2019
* Create unit-testing

* Rename unit-testing to unit-testing.md

* Bump Microsoft.EntityFrameworkCore from 2.2.1 to 2.2.3 in /Source

Bumps [Microsoft.EntityFrameworkCore](https://github.com/aspnet/EntityFrameworkCore) from 2.2.1 to 2.2.3.
- [Release notes](https://github.com/aspnet/EntityFrameworkCore/releases)
- [Commits](https://github.com/aspnet/EntityFrameworkCore/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update BasicModernTests.cs

Added unit test for BeginEdit while using MobileFormatter.

* MarimerLLC#1080 Update BasicModernTests.cs

Added unit test for BeginEdit while using MobileFormatter.

* Bump Microsoft.NETCore.UniversalWindowsPlatform in /Source

Bumps [Microsoft.NETCore.UniversalWindowsPlatform](https://github.com/Microsoft/dotnet) from 6.1.9 to 6.2.8.
- [Release notes](https://github.com/Microsoft/dotnet/releases)
- [Commits](https://github.com/Microsoft/dotnet/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* MarimerLLC#1080 Fixed issues caused by using MobileFormatter in .NET Framework

Fixes MarimerLLC#1080. Updated unit tests to complete the BeginEdit, CancelEdit, and ApplyChanges workflow. Added a factory method for getting a native formatter to support serialization and deserialization within the same process.Added unit tests to showcase the edit level mismatch bug that occurs when using the ViewModelBase class with MobileFormatter. Applied a fix to BusinessListBase to correct the edit level mismatch problem.

* Updated to NS1.3, trying to get tests to run...

* Bump Xamarin.Forms from 3.4.0.1029999 to 3.6.0.264807 in /Source

Bumps Xamarin.Forms from 3.4.0.1029999 to 3.6.0.264807.

Signed-off-by: dependabot[bot] <support@dependabot.com>

* MarimerLLC#804 Finished project updates for NS1.3.

* Updated tests and code to hopefully run on AppVeyor (MarimerLLC#1088)

* Updated tests and code to hopefully run on AppVeyor

* Updated tests and code to hopefully run on AppVeyor

* Create csla-github-flow.md

* Update CONTRIBUTING.md

* Update csla-github-flow.md

* Update csla-github-flow.md

* 623 fixing argument serialization issue (MarimerLLC#1089)

* MarimerLLC#680 Fixes trivia issue

Analyzer no longer removes leading and trailing trivia from new field
node.

* Closes MarimerLLC#623

* MarimerLLC#750 updated styles

* Update github flow doc - watch for changes

* Add link to Jonny's blog

* MarimerLLC#1091 Finished cleanup.

* 925 flag new keyword usage (MarimerLLC#1095)

Closes MarimerLLC#925 Added new analyzer

* 828-add-analyzer-docs

* 828-add-analyzer-docs

* Bump Microsoft.CodeAnalysis.Analyzers from 2.6.3 to 2.9.1 in /Source

Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.6.3 to 2.9.1.
- [Release notes](https://github.com/dotnet/roslyn-analyzers/releases)
- [Commits](dotnet/roslyn-analyzers@v2.6.3...v2.9.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update Books-and-videos.md

* Update What-is-CSLA-.NET.md

* Update index.md

* Create code-generators.md

* Update index.md

* MarimerLLC#1043 Update GetUser methods to return unauthenticated principal instead of null

* Clean up some unit tests.

* Resolve compiler warnings about test code.

* Resolve erroneous unit test compiler warnings.

* MarimerLLC#1070 Remove unused legacy Silverlight test code.

* MarimerLLC#1038 Set default transaction timeout to 600 seconds

* MarimerLLC#754 Fix comment

* MarimerLLC#1053 Update nuspec files to use license element

* Update version numbers to 5.0.0

* MarimerLLC#1109 Add ContextManager property to CslaConfiguration.

* MarimerLLC#1059 Add AsyncManualResetEvent and tests

* MarimerLLC#1059 Add SyncTask and use in HttpProxy for sync operations

* Ensure SimpleDataPortal async mismatch checks are passed concretes rather than type safe casts which could be null.

* Remove legacy files

* MarimerLLC#1059 Add TaskExtensions and tests; use in HttpProxy

* MarimerLLC#1059 Make .NET 4.0 retain old behavior

* MarimerLLC#1059 Implement sync code in HttpProxy that works from Windows Forms

* Ensure that explicit NULL default values for string properties are honoured rather than being altered to string.Empty. "default" defaults remain string.Empty.

* MarimerLLC#1059 Remove unneeded task extension classes and tests

* Add .NET 4 and 4.5 projects to CI build

* Bump Xamarin.Forms from 3.6.0.264807 to 3.6.0.293080 in /Source

Bumps Xamarin.Forms from 3.6.0.264807 to 3.6.0.293080.

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Add notes on working against a maintenance branch

* MarimerLLC#1059 HttpProxy with HttpClient and WebClient support

* MarimerLLC#1119 Update bootstrap version

* MarimerLLC#1115 Remove private constructors from templates (replacing with public ctors where appropriate)

* MarimerLLC#1111 Update website URL to https://cslanet.com; remove unused android tests

* Update release notes for version 5.0.0 prerelease

* Add missing work item to notes

* Add contributor info

* Bump MSTest.TestFramework from 1.2.1 to 1.4.0 in /Source

Bumps [MSTest.TestFramework](https://github.com/microsoft/testfx) from 1.2.1 to 1.4.0.
- [Release notes](https://github.com/microsoft/testfx/releases)
- [Commits](microsoft/testfx@v1.2.1...1.4.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Bump Microsoft.NET.Test.Sdk from 15.7.0 to 16.0.1 in /Source

Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 15.7.0 to 16.0.1.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](microsoft/vstest@v15.7.0...v16.0.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Bump MSTest.TestAdapter from 1.2.1 to 1.4.0 in /Source

Bumps [MSTest.TestAdapter](https://github.com/microsoft/testfx) from 1.2.1 to 1.4.0.
- [Release notes](https://github.com/microsoft/testfx/releases)
- [Commits](microsoft/testfx@v1.2.1...1.4.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update csla-github-flow.md

* MarimerLLC#1125 Fixed issue with AcceptChanges in BusinessListBase

Fixes MarimerLLC#1125. Added a unit test to demonstrate the issue with BusinessListBase.AcceptChanges when using the MobileFormatter. Changed the order of operations for setting negative edit levels to 0 during AcceptChanges so that the value passed to child.AcceptChanges matches what is expected by the argument validation in UndoableBase.

* Bump Microsoft.Extensions.Configuration.Json in /Source

Bumps [Microsoft.Extensions.Configuration.Json](https://github.com/aspnet/Extensions) from 2.1.1 to 2.2.0.
- [Release notes](https://github.com/aspnet/Extensions/releases)
- [Commits](dotnet/extensions@2.1.1...2.2.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Bump Microsoft.EntityFrameworkCore from 2.2.3 to 2.2.4 in /Source

Bumps [Microsoft.EntityFrameworkCore](https://github.com/aspnet/EntityFrameworkCore) from 2.2.3 to 2.2.4.
- [Release notes](https://github.com/aspnet/EntityFrameworkCore/releases)
- [Commits](https://github.com/aspnet/EntityFrameworkCore/commits/v2.2.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Add CSLA 5 info

* Update README.md

* Create serialization.md

* Bump Microsoft.CodeAnalysis.Analyzers from 2.9.1 to 2.9.2 in /Source

Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.9.1 to 2.9.2.
- [Release notes](https://github.com/dotnet/roslyn-analyzers/releases)
- [Commits](dotnet/roslyn-analyzers@v2.9.1...v2.9.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Bump Xamarin.Forms from 3.6.0.293080 to 3.6.0.344457 in /Source

Bumps Xamarin.Forms from 3.6.0.293080 to 3.6.0.344457.

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Bump Microsoft.NET.Test.Sdk from 16.0.1 to 16.1.0 in /Source

Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.0.1 to 16.1.0.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](microsoft/vstest@v16.0.1...v16.1.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* MarimerLLC#1138 Reorder enum values so compiler directive has no x-plat effect

* Add LinkedIn group URL

* Add FB page link

* Bump System.Data.SqlClient from 4.6.0 to 4.6.1 in /Source

Bumps [System.Data.SqlClient](https://github.com/dotnet/corefx) from 4.6.0 to 4.6.1.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* MarimerLLC#981 Move NS2 ConnectionManager to new project/namespace; split out SafeSqlDataReader functionality for NS2, leaving old implementation for .NET FX

* MarimerLLC#981 Update project metadata; create/update nuget definitions

* MarimerLLC#981 Update build sln, target and xml doc output

* Bump Xamarin.Forms from 3.6.0.344457 to 4.0.0.425677 in /Source

Bumps Xamarin.Forms from 3.6.0.344457 to 4.0.0.425677.

Signed-off-by: dependabot[bot] <support@dependabot.com>

* MarimerLLC#1152 Autoflush writer

* MarimerLLC#1150 Add support for Microsoft.Data.SqlClient

* Update with most recent committed changes

* MarimerLLC#1151 Modernize NuGet package names

* Add notice of NuGet package name changes

* MarimerLLC#288 Add default support for flowing of TransactionScope transactions when using async/await pattern

* MarimerLLC#1160 Mark Silverlight style data portal methods Obsolete

* MarimerLLC#1160 Update tests to stop using Silverlight style data portal calls

* Update releasenotes.md

* Update releasenotes.md

* MarimerLLC#409 Allow async Task business rules via IBusinessRuleAsync and BusinessRuleAsync

* MarimerLLC#409 Update readme

* MarimerLLC#1102 Refactor server-side data portal code in prep for flexible data portal method names

* MarimerLLC#1102 Create and use method name cache

* Update Books-and-videos.md

* Bump Microsoft.NET.Test.Sdk from 16.1.0 to 16.1.1 in /Source

Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.1.0 to 16.1.1.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](microsoft/vstest@v16.1.0...v16.1.1)

* Add UpdateAll to ChildDataPortal and UpdateAllChildren to FieldDataManager

* MarimerLLC#1165 Add FlowSynchronizationContext so LocalProxy flows sync context via config

* Add note about MarimerLLC#1164 fix

* FieldManager UpdateAllChildren tests

* Bump Xamarin.Forms from 4.0.0.425677 to 4.0.0.471375 in /Source

Bumps Xamarin.Forms from 4.0.0.425677 to 4.0.0.471375.

* Add comment for MarimerLLC#1167

* Add contributor note

* MarimerLLC#1101 Update some unit tests to confirm changes work

* MarimerLLC#1101 Add RegisterProperty overloads for nameof; mark some as Obsolete

* MarimerLLC#1101 Add RegisterProperty overloads for nameof; mark some as Obsolete

* MarimerLLC#1101 Add overloads for RegisterMethod and nameof()

* MarimerLLC#1101 Update snippets to use nameof()

* Revert refactor that won't work on C# 7

* Clean up and remove old compiler directive code

* MarimerLLC#1102 Add data portal operation attributes.

* MarimerLLC#787 Add FromServices attribute for use by DI in data portal

* MarimerLLC#787 Add reflection method to find data portal method to be invoked based on criteria and DI parameters

* MarimerLLC#787 Implement FindMethodForCriteria and tests

* MarimerLLC#787 Implement "greedy" DI to minimize ambiguous method exceptions.

* Bump Xamarin.Forms from 4.0.0.471375 to 4.0.0.482894 in /Source

Bumps Xamarin.Forms from 4.0.0.471375 to 4.0.0.482894.

* MarimerLLC#787 Fix attribute type names

* MarimerLLC#1101 Fix unit test warnings due to obsolete RegisterProperty methods

* MarimerLLC#1101 Resolve RegisterProperty warnings

* MarimerLLC#787 Fix issue due to attribute renaming

* MarimerLLC#787 Implement CallMethodTryAsync for DI

* MarimerLLC#1176 Begin work to allow multiple criteria params for Create

* MarimerLLC#787 Enhance ApplicationContext to access IServiceProvider instance

* MarimerLLC#1179 Remove WebConfiguration.cs

* Organize Csla.Configuration files for clarity

* MarimerLLC#1179 MarimerLLC#787 Configuration updates for getting ServiceProvider

* Add static method to improve readability

* Add editorconfig file for Samples

* MarimerLLC#787 Add tests for calling methods with DI

* MarimerLLC#787 Fix bugs in the new data portal method location function

* MarimerLLC#787 Resolve remaining regression test issues so the new create now passes all tests

* MarimerLLC#1176 MarimerLLC#787 Implement fetch/update/insert/execute/delete behaviors

* Bump Microsoft.CodeAnalysis.Analyzers from 2.9.2 to 2.9.3 in /Source

Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.9.2 to 2.9.3.
- [Release notes](https://github.com/dotnet/roslyn-analyzers/releases)
- [Commits](dotnet/roslyn-analyzers@v2.9.2...v2.9.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Bump Xamarin.Forms from 4.0.0.482894 to 4.0.0.497661 in /Source

Bumps Xamarin.Forms from 4.0.0.482894 to 4.0.0.497661.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* MarimerLLC#787 Get RunLocal working again, support factory types

* Revert C# 7.1 dependency due to appveyor build issue

* Bump Microsoft.NET.Test.Sdk from 16.1.1 to 16.2.0 in /Source

Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.1.1 to 16.2.0.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](microsoft/vstest@v16.1.1...v16.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Bump Xamarin.Forms from 4.0.0.497661 to 4.0.0.540366 in /Source

Bumps Xamarin.Forms from 4.0.0.497661 to 4.0.0.540366.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* MarimerLLC#1191 Fix EditLevel issue with BusinessRules (really make UndoableBase understand IMobileObject types)

* Addresses MarimerLLC#1194, adding an IAuthorizationContext.

* Bump Xamarin.Forms from 4.0.0.540366 to 4.1.0.555618 in /Source

Bumps Xamarin.Forms from 4.0.0.540366 to 4.1.0.555618.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* MarimerLLC#1194 Add copyright notice

* Bump Microsoft.EntityFrameworkCore from 2.2.4 to 2.2.6 in /Source

Bumps [Microsoft.EntityFrameworkCore](https://github.com/aspnet/EntityFrameworkCore) from 2.2.4 to 2.2.6.
- [Release notes](https://github.com/aspnet/EntityFrameworkCore/releases)
- [Commits](dotnet/efcore@v2.2.4...v2.2.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Bump Xamarin.Forms from 4.1.0.555618 to 4.1.0.581479 in /Source

Bumps Xamarin.Forms from 4.1.0.555618 to 4.1.0.581479.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Fix Samples\SimpleNTier - WpfUI missing references

* MarimerLLC#1100 Got the analyzer working.

* MarimerLLC#1100 Got the code fix working, still needs unit tests.

* MarimerLLC#1100 Got all the code in, will do a PR if no other issues arise.

* MarimerLLC#1100 Almost done...

* MarimerLLC#1100 Almost forgot to change to look for all operations, root and child

* Bump Xamarin.Forms from 4.1.0.581479 to 4.1.0.618606 in /Source

Bumps Xamarin.Forms from 4.1.0.581479 to 4.1.0.618606.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* MarimerLLC#1100 Minor analyzer changes based on Roslyn analyzer suggestions and added .md file for CSLA0012

* Bump Microsoft.CodeAnalysis.Analyzers from 2.9.3 to 2.9.4 in /Source

Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.9.3 to 2.9.4.
- [Release notes](https://github.com/dotnet/roslyn-analyzers/releases)
- [Changelog](https://github.com/dotnet/roslyn-analyzers/blob/master/PostReleaseActivities.md)
- [Commits](dotnet/roslyn-analyzers@v2.9.3...v2.9.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* MarimerLLC#1212 Fix issues with undo and cloning

* MarimerLLC#1212 Major rework of n-level undo interactions with IMobileObject

* MarimerLLC#1212 Remove obsolete GetNativeFormatter method

* MarimerLLC#1102 Re-implement create and fetch for ChildDataPortal

* MarimerLLC#1102 Get create/fetch/update working with ChildDataPortal

* Clean up code based on VS recommendations

* Fix warnings about xml comments

* Clean up code based on VS recommendations

* MarimerLLC#1102 Fix bugs related to new ChildDataPortal implementation

* Update releasenotes.md

* Update releasenotes.md

* Fix build issue

* MarimerLLC#1205 Add base class for DP operation attributes

* MarimerLLC#392 Got the analyzer working.

* MarimerLLC#392 Got the code fix working.

* MarimerLLC#392 Added Markdown documentation.

* MarimerLLC#392 Added Markdown documentation from the right place (hopefully)

* MarimerLLC#392 Final commit
Troncho added a commit to Troncho/csla that referenced this issue Aug 6, 2019
* Create unit-testing

* Rename unit-testing to unit-testing.md

* Bump Microsoft.EntityFrameworkCore from 2.2.1 to 2.2.3 in /Source

Bumps [Microsoft.EntityFrameworkCore](https://github.com/aspnet/EntityFrameworkCore) from 2.2.1 to 2.2.3.
- [Release notes](https://github.com/aspnet/EntityFrameworkCore/releases)
- [Commits](https://github.com/aspnet/EntityFrameworkCore/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update BasicModernTests.cs

Added unit test for BeginEdit while using MobileFormatter.

* MarimerLLC#1080 Update BasicModernTests.cs

Added unit test for BeginEdit while using MobileFormatter.

* Bump Microsoft.NETCore.UniversalWindowsPlatform in /Source

Bumps [Microsoft.NETCore.UniversalWindowsPlatform](https://github.com/Microsoft/dotnet) from 6.1.9 to 6.2.8.
- [Release notes](https://github.com/Microsoft/dotnet/releases)
- [Commits](https://github.com/Microsoft/dotnet/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* MarimerLLC#1080 Fixed issues caused by using MobileFormatter in .NET Framework

Fixes MarimerLLC#1080. Updated unit tests to complete the BeginEdit, CancelEdit, and ApplyChanges workflow. Added a factory method for getting a native formatter to support serialization and deserialization within the same process.Added unit tests to showcase the edit level mismatch bug that occurs when using the ViewModelBase class with MobileFormatter. Applied a fix to BusinessListBase to correct the edit level mismatch problem.

* Updated to NS1.3, trying to get tests to run...

* Bump Xamarin.Forms from 3.4.0.1029999 to 3.6.0.264807 in /Source

Bumps Xamarin.Forms from 3.4.0.1029999 to 3.6.0.264807.

Signed-off-by: dependabot[bot] <support@dependabot.com>

* MarimerLLC#804 Finished project updates for NS1.3.

* Updated tests and code to hopefully run on AppVeyor (MarimerLLC#1088)

* Updated tests and code to hopefully run on AppVeyor

* Updated tests and code to hopefully run on AppVeyor

* Create csla-github-flow.md

* Update CONTRIBUTING.md

* Update csla-github-flow.md

* Update csla-github-flow.md

* 623 fixing argument serialization issue (MarimerLLC#1089)

* MarimerLLC#680 Fixes trivia issue

Analyzer no longer removes leading and trailing trivia from new field
node.

* Closes MarimerLLC#623

* MarimerLLC#750 updated styles

* Update github flow doc - watch for changes

* Add link to Jonny's blog

* MarimerLLC#1091 Finished cleanup.

* 925 flag new keyword usage (MarimerLLC#1095)

Closes MarimerLLC#925 Added new analyzer

* 828-add-analyzer-docs

* 828-add-analyzer-docs

* Bump Microsoft.CodeAnalysis.Analyzers from 2.6.3 to 2.9.1 in /Source

Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.6.3 to 2.9.1.
- [Release notes](https://github.com/dotnet/roslyn-analyzers/releases)
- [Commits](dotnet/roslyn-analyzers@v2.6.3...v2.9.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update Books-and-videos.md

* Update What-is-CSLA-.NET.md

* Update index.md

* Create code-generators.md

* Update index.md

* MarimerLLC#1043 Update GetUser methods to return unauthenticated principal instead of null

* Clean up some unit tests.

* Resolve compiler warnings about test code.

* Resolve erroneous unit test compiler warnings.

* MarimerLLC#1070 Remove unused legacy Silverlight test code.

* MarimerLLC#1038 Set default transaction timeout to 600 seconds

* MarimerLLC#754 Fix comment

* MarimerLLC#1053 Update nuspec files to use license element

* Update version numbers to 5.0.0

* MarimerLLC#1109 Add ContextManager property to CslaConfiguration.

* MarimerLLC#1059 Add AsyncManualResetEvent and tests

* MarimerLLC#1059 Add SyncTask and use in HttpProxy for sync operations

* Ensure SimpleDataPortal async mismatch checks are passed concretes rather than type safe casts which could be null.

* Remove legacy files

* MarimerLLC#1059 Add TaskExtensions and tests; use in HttpProxy

* MarimerLLC#1059 Make .NET 4.0 retain old behavior

* MarimerLLC#1059 Implement sync code in HttpProxy that works from Windows Forms

* Ensure that explicit NULL default values for string properties are honoured rather than being altered to string.Empty. "default" defaults remain string.Empty.

* MarimerLLC#1059 Remove unneeded task extension classes and tests

* Add .NET 4 and 4.5 projects to CI build

* Bump Xamarin.Forms from 3.6.0.264807 to 3.6.0.293080 in /Source

Bumps Xamarin.Forms from 3.6.0.264807 to 3.6.0.293080.

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Add notes on working against a maintenance branch

* MarimerLLC#1059 HttpProxy with HttpClient and WebClient support

* MarimerLLC#1119 Update bootstrap version

* MarimerLLC#1115 Remove private constructors from templates (replacing with public ctors where appropriate)

* MarimerLLC#1111 Update website URL to https://cslanet.com; remove unused android tests

* Update release notes for version 5.0.0 prerelease

* Add missing work item to notes

* Add contributor info

* Bump MSTest.TestFramework from 1.2.1 to 1.4.0 in /Source

Bumps [MSTest.TestFramework](https://github.com/microsoft/testfx) from 1.2.1 to 1.4.0.
- [Release notes](https://github.com/microsoft/testfx/releases)
- [Commits](microsoft/testfx@v1.2.1...1.4.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Bump Microsoft.NET.Test.Sdk from 15.7.0 to 16.0.1 in /Source

Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 15.7.0 to 16.0.1.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](microsoft/vstest@v15.7.0...v16.0.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Bump MSTest.TestAdapter from 1.2.1 to 1.4.0 in /Source

Bumps [MSTest.TestAdapter](https://github.com/microsoft/testfx) from 1.2.1 to 1.4.0.
- [Release notes](https://github.com/microsoft/testfx/releases)
- [Commits](microsoft/testfx@v1.2.1...1.4.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update csla-github-flow.md

* MarimerLLC#1125 Fixed issue with AcceptChanges in BusinessListBase

Fixes MarimerLLC#1125. Added a unit test to demonstrate the issue with BusinessListBase.AcceptChanges when using the MobileFormatter. Changed the order of operations for setting negative edit levels to 0 during AcceptChanges so that the value passed to child.AcceptChanges matches what is expected by the argument validation in UndoableBase.

* Bump Microsoft.Extensions.Configuration.Json in /Source

Bumps [Microsoft.Extensions.Configuration.Json](https://github.com/aspnet/Extensions) from 2.1.1 to 2.2.0.
- [Release notes](https://github.com/aspnet/Extensions/releases)
- [Commits](dotnet/extensions@2.1.1...2.2.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Bump Microsoft.EntityFrameworkCore from 2.2.3 to 2.2.4 in /Source

Bumps [Microsoft.EntityFrameworkCore](https://github.com/aspnet/EntityFrameworkCore) from 2.2.3 to 2.2.4.
- [Release notes](https://github.com/aspnet/EntityFrameworkCore/releases)
- [Commits](https://github.com/aspnet/EntityFrameworkCore/commits/v2.2.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Add CSLA 5 info

* Update README.md

* Create serialization.md

* Bump Microsoft.CodeAnalysis.Analyzers from 2.9.1 to 2.9.2 in /Source

Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.9.1 to 2.9.2.
- [Release notes](https://github.com/dotnet/roslyn-analyzers/releases)
- [Commits](dotnet/roslyn-analyzers@v2.9.1...v2.9.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Bump Xamarin.Forms from 3.6.0.293080 to 3.6.0.344457 in /Source

Bumps Xamarin.Forms from 3.6.0.293080 to 3.6.0.344457.

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Bump Microsoft.NET.Test.Sdk from 16.0.1 to 16.1.0 in /Source

Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.0.1 to 16.1.0.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](microsoft/vstest@v16.0.1...v16.1.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* MarimerLLC#1138 Reorder enum values so compiler directive has no x-plat effect

* Add LinkedIn group URL

* Add FB page link

* Bump System.Data.SqlClient from 4.6.0 to 4.6.1 in /Source

Bumps [System.Data.SqlClient](https://github.com/dotnet/corefx) from 4.6.0 to 4.6.1.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* MarimerLLC#981 Move NS2 ConnectionManager to new project/namespace; split out SafeSqlDataReader functionality for NS2, leaving old implementation for .NET FX

* MarimerLLC#981 Update project metadata; create/update nuget definitions

* MarimerLLC#981 Update build sln, target and xml doc output

* Bump Xamarin.Forms from 3.6.0.344457 to 4.0.0.425677 in /Source

Bumps Xamarin.Forms from 3.6.0.344457 to 4.0.0.425677.

Signed-off-by: dependabot[bot] <support@dependabot.com>

* MarimerLLC#1152 Autoflush writer

* MarimerLLC#1150 Add support for Microsoft.Data.SqlClient

* Update with most recent committed changes

* MarimerLLC#1151 Modernize NuGet package names

* Add notice of NuGet package name changes

* MarimerLLC#288 Add default support for flowing of TransactionScope transactions when using async/await pattern

* MarimerLLC#1160 Mark Silverlight style data portal methods Obsolete

* MarimerLLC#1160 Update tests to stop using Silverlight style data portal calls

* Update releasenotes.md

* Update releasenotes.md

* MarimerLLC#409 Allow async Task business rules via IBusinessRuleAsync and BusinessRuleAsync

* MarimerLLC#409 Update readme

* MarimerLLC#1102 Refactor server-side data portal code in prep for flexible data portal method names

* MarimerLLC#1102 Create and use method name cache

* Update Books-and-videos.md

* Bump Microsoft.NET.Test.Sdk from 16.1.0 to 16.1.1 in /Source

Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.1.0 to 16.1.1.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](microsoft/vstest@v16.1.0...v16.1.1)

* Add UpdateAll to ChildDataPortal and UpdateAllChildren to FieldDataManager

* MarimerLLC#1165 Add FlowSynchronizationContext so LocalProxy flows sync context via config

* Add note about MarimerLLC#1164 fix

* FieldManager UpdateAllChildren tests

* Bump Xamarin.Forms from 4.0.0.425677 to 4.0.0.471375 in /Source

Bumps Xamarin.Forms from 4.0.0.425677 to 4.0.0.471375.

* Add comment for MarimerLLC#1167

* Add contributor note

* MarimerLLC#1101 Update some unit tests to confirm changes work

* MarimerLLC#1101 Add RegisterProperty overloads for nameof; mark some as Obsolete

* MarimerLLC#1101 Add RegisterProperty overloads for nameof; mark some as Obsolete

* MarimerLLC#1101 Add overloads for RegisterMethod and nameof()

* MarimerLLC#1101 Update snippets to use nameof()

* Revert refactor that won't work on C# 7

* Clean up and remove old compiler directive code

* MarimerLLC#1102 Add data portal operation attributes.

* MarimerLLC#787 Add FromServices attribute for use by DI in data portal

* MarimerLLC#787 Add reflection method to find data portal method to be invoked based on criteria and DI parameters

* MarimerLLC#787 Implement FindMethodForCriteria and tests

* MarimerLLC#787 Implement "greedy" DI to minimize ambiguous method exceptions.

* Bump Xamarin.Forms from 4.0.0.471375 to 4.0.0.482894 in /Source

Bumps Xamarin.Forms from 4.0.0.471375 to 4.0.0.482894.

* MarimerLLC#787 Fix attribute type names

* MarimerLLC#1101 Fix unit test warnings due to obsolete RegisterProperty methods

* MarimerLLC#1101 Resolve RegisterProperty warnings

* MarimerLLC#787 Fix issue due to attribute renaming

* MarimerLLC#787 Implement CallMethodTryAsync for DI

* MarimerLLC#1176 Begin work to allow multiple criteria params for Create

* MarimerLLC#787 Enhance ApplicationContext to access IServiceProvider instance

* MarimerLLC#1179 Remove WebConfiguration.cs

* Organize Csla.Configuration files for clarity

* MarimerLLC#1179 MarimerLLC#787 Configuration updates for getting ServiceProvider

* Add static method to improve readability

* Add editorconfig file for Samples

* MarimerLLC#787 Add tests for calling methods with DI

* MarimerLLC#787 Fix bugs in the new data portal method location function

* MarimerLLC#787 Resolve remaining regression test issues so the new create now passes all tests

* MarimerLLC#1176 MarimerLLC#787 Implement fetch/update/insert/execute/delete behaviors

* Bump Microsoft.CodeAnalysis.Analyzers from 2.9.2 to 2.9.3 in /Source

Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.9.2 to 2.9.3.
- [Release notes](https://github.com/dotnet/roslyn-analyzers/releases)
- [Commits](dotnet/roslyn-analyzers@v2.9.2...v2.9.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Bump Xamarin.Forms from 4.0.0.482894 to 4.0.0.497661 in /Source

Bumps Xamarin.Forms from 4.0.0.482894 to 4.0.0.497661.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* MarimerLLC#787 Get RunLocal working again, support factory types

* Revert C# 7.1 dependency due to appveyor build issue

* Bump Microsoft.NET.Test.Sdk from 16.1.1 to 16.2.0 in /Source

Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.1.1 to 16.2.0.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](microsoft/vstest@v16.1.1...v16.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Bump Xamarin.Forms from 4.0.0.497661 to 4.0.0.540366 in /Source

Bumps Xamarin.Forms from 4.0.0.497661 to 4.0.0.540366.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* MarimerLLC#1191 Fix EditLevel issue with BusinessRules (really make UndoableBase understand IMobileObject types)

* Addresses MarimerLLC#1194, adding an IAuthorizationContext.

* Bump Xamarin.Forms from 4.0.0.540366 to 4.1.0.555618 in /Source

Bumps Xamarin.Forms from 4.0.0.540366 to 4.1.0.555618.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* MarimerLLC#1194 Add copyright notice

* Bump Microsoft.EntityFrameworkCore from 2.2.4 to 2.2.6 in /Source

Bumps [Microsoft.EntityFrameworkCore](https://github.com/aspnet/EntityFrameworkCore) from 2.2.4 to 2.2.6.
- [Release notes](https://github.com/aspnet/EntityFrameworkCore/releases)
- [Commits](dotnet/efcore@v2.2.4...v2.2.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Bump Xamarin.Forms from 4.1.0.555618 to 4.1.0.581479 in /Source

Bumps Xamarin.Forms from 4.1.0.555618 to 4.1.0.581479.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Fix Samples\SimpleNTier - WpfUI missing references

* MarimerLLC#1100 Got the analyzer working.

* MarimerLLC#1100 Got the code fix working, still needs unit tests.

* MarimerLLC#1100 Got all the code in, will do a PR if no other issues arise.

* MarimerLLC#1100 Almost done...

* MarimerLLC#1100 Almost forgot to change to look for all operations, root and child

* Bump Xamarin.Forms from 4.1.0.581479 to 4.1.0.618606 in /Source

Bumps Xamarin.Forms from 4.1.0.581479 to 4.1.0.618606.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* MarimerLLC#1100 Minor analyzer changes based on Roslyn analyzer suggestions and added .md file for CSLA0012

* Bump Microsoft.CodeAnalysis.Analyzers from 2.9.3 to 2.9.4 in /Source

Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.9.3 to 2.9.4.
- [Release notes](https://github.com/dotnet/roslyn-analyzers/releases)
- [Changelog](https://github.com/dotnet/roslyn-analyzers/blob/master/PostReleaseActivities.md)
- [Commits](dotnet/roslyn-analyzers@v2.9.3...v2.9.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* MarimerLLC#1212 Fix issues with undo and cloning

* MarimerLLC#1212 Major rework of n-level undo interactions with IMobileObject

* MarimerLLC#1212 Remove obsolete GetNativeFormatter method

* MarimerLLC#1102 Re-implement create and fetch for ChildDataPortal

* MarimerLLC#1102 Get create/fetch/update working with ChildDataPortal

* Clean up code based on VS recommendations

* Fix warnings about xml comments

* Clean up code based on VS recommendations

* MarimerLLC#1102 Fix bugs related to new ChildDataPortal implementation

* Update releasenotes.md

* Update releasenotes.md

* Fix build issue

* MarimerLLC#1205 Add base class for DP operation attributes

* MarimerLLC#392 Got the analyzer working.

* MarimerLLC#392 Got the code fix working.

* MarimerLLC#392 Added Markdown documentation.

* MarimerLLC#392 Added Markdown documentation from the right place (hopefully)

* MarimerLLC#392 Final commit
@github-actions
Copy link

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 11, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
No open projects
Version 5.0.0
  
Done
Development

No branches or pull requests

3 participants