{"id":3469023,"name":"graphdiff","ecosystem":"nuget","description":"Entity Framework Code First graph update extension method.","homepage":"https://github.com/vip32/GraphDiff","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/vip32/GraphDiff","keywords_array":["EntityFramework","DbContext","EF","CodeFirst","Merge","Graph","Update"],"namespace":null,"versions_count":3,"first_release_published_at":"1900-01-01T00:00:00.000Z","latest_release_published_at":"2026-03-22T07:24:52.861Z","latest_release_number":null,"last_synced_at":"2026-03-22T07:24:54.117Z","created_at":"2022-04-10T18:51:46.794Z","updated_at":"2026-03-22T07:24:54.118Z","registry_url":"https://www.nuget.org/packages/graphdiff/","install_command":"Install-Package graphdiff","documentation_url":null,"metadata":{"owners":"brentmckendrick, vvproosdij","license_url":"http://opensource.org/licenses/MIT","require_license_acceptance":false,"icon_url":"https://github.com/vip32/GraphDiff","development_dependency":false,"serviceable":false,"framework_assemblies":[],"package_types":[],"summary":"Looking for a complete solution for automatically updating a graph of entities using the Entity Framework?\n\n      Say you have a Company which has many Contacts. A contact is not defined on its own and is a One-To-Many (with required parent) record of a Company. i.e. The company is the Aggregate Root. Assume you have a detached Company graph with its Contacts attached and want to reflect the state of this graph in the database.\n\n      At present using the Entity Framework you will need to perform the updates of the contacts manually, check if each contact is new and add, check if updated and edit, check if removed then delete it from the database. Once you have to do this for a few different aggregates in a large system you start to realize there must be a better, more generic way.\n\n      Well good news is that after a few refactorings I’ve found a nice solution to this problem. The provided extension method handles the whole diff for you."},"repo_metadata":{"id":7677974,"uuid":"9040646","full_name":"vip32/GraphDiff","owner":"vip32","description":"Entity Framework Code First graph update extension method","archived":false,"fork":true,"pushed_at":"2013-03-27T12:18:24.000Z","size":1552,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-19T07:27:52.430Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://refactorthis.wordpress.com/2012/12/11/introducing-graphdiff-for-entity-framework-code-first-allowing-automated-updates-of-a-graph-of-detached-entities/","language":"C#","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"zzzprojects/GraphDiff","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vip32.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-03-26T21:18:25.000Z","updated_at":"2017-09-10T15:00:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vip32/GraphDiff","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vip32/GraphDiff","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vip32%2FGraphDiff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vip32%2FGraphDiff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vip32%2FGraphDiff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vip32%2FGraphDiff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vip32","download_url":"https://codeload.github.com/vip32/GraphDiff/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vip32%2FGraphDiff/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268192858,"owners_count":24210599,"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","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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"},"owner_record":{"login":"vip32","name":"Vincent van Proosdij","uuid":"164303","kind":"user","description":"try not. do or do not. there is no try","email":"","website":"https://sourcerer.io/vip32","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/164303?v=4","repositories_count":95,"last_synced_at":"2024-04-08T15:25:08.701Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/vip32","funding_links":[],"total_stars":205,"followers":34,"following":25,"created_at":"2022-11-02T19:46:50.683Z","updated_at":"2024-04-08T15:25:17.327Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vip32","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vip32/repositories"},"tags":[]},"repo_metadata_updated_at":"2025-08-01T09:52:52.530Z","dependent_packages_count":0,"downloads":null,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":12.696710402554181,"dependent_packages_count":19.548236353119677,"stargazers_count":null,"forks_count":null,"average":16.12247337783693},"purl":"pkg:nuget/graphdiff","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/nuget/graphdiff","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/nuget/graphdiff","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/nuget/graphdiff/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-11-19T07:24:23.454Z","issues_count":0,"pull_requests_count":1,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":281470338.0,"issues_closed_count":0,"pull_requests_closed_count":1,"pull_request_authors_count":1,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":0.0,"merged_pull_requests_count":0,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/vip32%2FGraphDiff/issues","maintainers":[],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/graphdiff/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/graphdiff/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/graphdiff/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/graphdiff/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/graphdiff/codemeta","maintainers":[]}