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

Support customization of master-detail record handling #75

Open
wants to merge 21 commits into
base: master
Choose a base branch
from

Conversation

mthamil
Copy link

@mthamil mthamil commented Aug 5, 2018

Using the fluent layout classes for record configuration, it is almost possible to completely decouple record models from the FlatFile library. The only exception is in the case of master/detail record relationships. This currently requires the use of the interfaces IMasterRecord and IDetailRecord.

In this pull request, I have factored out master-detail record handling into a pluggable mechanism. The stateful side of master-detail tracking can be replaced in its entirety using an implementation of the IMasterDetailTracker interface, or just the checking of whether records are a master or detail and what to do with them can be changed by providing a MasterDetailTrackerBase instance with different constructor parameters.

The changes should be backward compatible since the default implementation preserves the current behavior.

I have added tests using, somewhat ironically, an attribute-based implementation of master-detail records. It is really just based on the existing master-detail tests.

As a side note, I was not able to execute the tests in Visual Studio until I installed the xUnit Visual Studio runner package.

I welcome feedback and hope that this could be merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant