{"id":19740717,"url":"https://github.com/zzzprojects/EntityFrameworkExtras","last_synced_at":"2025-04-30T05:33:30.052Z","repository":{"id":5634388,"uuid":"6842635","full_name":"zzzprojects/EntityFrameworkExtras","owner":"zzzprojects","description":"EntityFrameworkExtras provides some useful additions to EntityFramework such as executing Stored Procedures with User-Defined Table Types and Output Parameters.","archived":false,"fork":false,"pushed_at":"2024-07-10T07:31:32.000Z","size":12542,"stargazers_count":78,"open_issues_count":3,"forks_count":40,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-07-10T09:28:15.057Z","etag":null,"topics":["c-sharp","efcore","entity-framework","entity-framework-core","entityframework","entityframeworkcore"],"latest_commit_sha":null,"homepage":"https://entityframework-extras.net/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zzzprojects.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["zzzprojects"],"custom":["https://zzzprojects.com/contribute"]}},"created_at":"2012-11-24T18:04:01.000Z","updated_at":"2024-07-10T07:31:28.000Z","dependencies_parsed_at":"2024-07-10T09:18:05.377Z","dependency_job_id":"b4476ee0-8381-41bc-83fa-742db8557f85","html_url":"https://github.com/zzzprojects/EntityFrameworkExtras","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzzprojects%2FEntityFrameworkExtras","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzzprojects%2FEntityFrameworkExtras/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzzprojects%2FEntityFrameworkExtras/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzzprojects%2FEntityFrameworkExtras/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zzzprojects","download_url":"https://codeload.github.com/zzzprojects/EntityFrameworkExtras/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224199941,"owners_count":17272362,"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","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"}},"keywords":["c-sharp","efcore","entity-framework","entity-framework-core","entityframework","entityframeworkcore"],"created_at":"2024-11-12T01:23:00.894Z","updated_at":"2024-11-12T01:23:03.494Z","avatar_url":"https://github.com/zzzprojects.png","language":"C#","readme":"### Library Powered By\r\n\r\nThis library is powered by [Entity Framework Extensions](https://entityframework-extensions.net/?z=github\u0026y=entityframeworkextras-plus)\r\n\r\n\u003ca href=\"https://entityframework-extensions.net/?z=github\u0026y=entityframeworkextras\"\u003e\r\n\u003ckbd\u003e\r\n\u003cimg src=\"https://zzzprojects.github.io/images/logo/entityframework-extensions-pub.jpg\" alt=\"Entity Framework Extensions\" /\u003e\r\n\u003c/kbd\u003e\r\n\u003c/a\u003e\r\n\r\n---\r\n\r\nWhat's EntityFrameworkExtras?\r\n=====================\r\n\r\nEntityFrameworkExtras provides some useful additions to EntityFramework, such as executing Stored Procedures with User-Defined Table Types and Output Parameters.\r\n\r\n### Executing a Stored Procedure with a User Defined Table Type\r\n\r\n* Define a stored procedure class\r\n\r\n~~~ csharp\r\n[StoredProcedure(\"storedproc_AddMemberWithAddresses\")]\r\npublic class AddMemberStoredWithAddressesProcedure\r\n{\r\n        [StoredProcedureParameter(SqlDbType.NVarChar, ParameterName = \"ForeName\")]\r\n\tpublic string FirstName { get; set; }\r\n\r\n\t[StoredProcedureParameter(SqlDbType.NVarChar,ParameterName = \"SurName\")]\r\n\tpublic string LastName { get; set; }\r\n\r\n\t[StoredProcedureParameter(SqlDbType.Int)]\r\n\tpublic int Age { get; set; }\r\n\r\n\t[StoredProcedureParameter(SqlDbType.Udt)]\r\n\tpublic List\u003cAddress\u003e Addresses { get; set; }\r\n}\r\n~~~\r\n\r\n\r\n* A User Defined Table Type parameter is declared as a List\u003c\u003e (List\u003cAddress\u003e). The UDT will also require some attributes:\r\n\r\n~~~ csharp\r\n[UserDefinedTableType(\"udt_Address\")]\r\npublic class Address\r\n{\r\n\t[UserDefinedTableTypeColumn(1)]\r\n\tpublic string Line1 { get; set; }\r\n\r\n\t[UserDefinedTableTypeColumn(2)]\r\n\tpublic string Line2 { get; set; }\r\n\r\n\t[UserDefinedTableTypeColumn(3)]\r\n\tpublic string Postcode { get; set; }\r\n}\r\n~~~\r\n\r\n* Execute the Stored Procedure with either a DbContext or an ObjectContext\r\n\r\n~~~ csharp\r\nDbContext context = new DbContext(\"ConnectionString\");\r\n\r\nvar proc = new AddMemberStoredWithAddressesProcedure()\r\n\t{\r\n\t\tFirstName = \"Michael\",\r\n\t\tLastName = \"Bovis\",\r\n\t\tAge = 26,\r\n\t\tAddresses = new List\u003cAddress\u003e()\r\n\t\t{\r\n\t\t\tnew Address() {Line1 = \"16\", Line2 = \"The Lane\", Postcode = \"MA24WE\"}\r\n\t\t}\r\n\t};\r\n\r\ncontext.Database.ExecuteStoredProcedure(proc);\r\n~~~\r\n\r\n\r\n\r\n### Executing a Stored Procedure with an Output parameter\r\n\r\n* To add an Output parameter, you need to set the Direction parameter to ParameterDirection.Output. \r\n\r\n~~~ csharp\r\n[StoredProcedure(\"storedProc_GetOldestAge\")]\r\npublic class GetOldestAgeStoredProcedure\r\n{\r\n\t[StoredProcedureParameter(SqlDbType.Int, Direction = ParameterDirection.Output)]\r\n\tpublic int Age { get; set; }\r\n}\r\n~~~\r\n\r\n* Execute the Stored Procedure, and the parameter will be set to the output parameter value\r\n\r\n~~~ csharp\r\nvar proc = new GetOldestAgeStoredProcedure();\r\n\r\ncontext.Database.ExecuteStoredProcedure(proc);\r\n\r\nint age = proc.Age; //Is now the oldest age\r\n~~~\r\n\r\n## Useful links\r\n\r\n- [Website](https://entityframework-extras.net/overview)\r\n- [Download](https://entityframework-extras.net/download)\r\n- [NuGet Entity Framework Core](https://www.nuget.org/packages/EntityFrameworkExtras.EFCore/)\r\n- [Nuget Entity Framework 6](https://www.nuget.org/packages/EntityFrameworkExtras.EF6/)\r\n- [Nuget Entity Framework 5](https://www.nuget.org/packages/EntityFrameworkExtras.EF5/)\r\n- [Nuget Entity Framework 4](https://www.nuget.org/packages/EntityFrameworkExtras/)\r\n\r\n## Contribute\r\n\r\nThe best way to contribute is by **spreading the word** about the library:\r\n\r\n - Blog it\r\n - Comment it\r\n - Star it\r\n - Share it\r\n \r\nA **HUGE THANKS** for your help.\r\n\r\n## More Projects\r\n\r\n- Projects:\r\n   - [EntityFramework Extensions](https://entityframework-extensions.net/)\r\n   - [Dapper Plus](https://dapper-plus.net/)\r\n   - [C# Eval Expression](https://eval-expression.net/)\r\n- Learn Websites\r\n   - [Learn EF Core](https://www.learnentityframeworkcore.com/)\r\n   - [Learn Dapper](https://www.learndapper.com/)\r\n- Online Tools:\r\n   - [.NET Fiddle](https://dotnetfiddle.net/)\r\n   - [SQL Fiddle](https://sqlfiddle.com/)\r\n   - [ZZZ Code AI](https://zzzcode.ai/)\r\n- and much more!\r\n\r\nTo view all our free and paid projects, visit our website [ZZZ Projects](https://zzzprojects.com/).\r\n","funding_links":["https://github.com/sponsors/zzzprojects","https://zzzprojects.com/contribute"],"categories":["Supported Packages"],"sub_categories":["Contents"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzzzprojects%2FEntityFrameworkExtras","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzzzprojects%2FEntityFrameworkExtras","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzzzprojects%2FEntityFrameworkExtras/lists"}