# Value Objects ## 📕 Articles - [Implement value objects](https://docs.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/implement-value-objects) - [The hidden value of the Value Object](https://dev.to/rafalpienkowski/the-hidden-value-of-the-value-object-1hga) - [DDD Value Objects With Entity Framework Core](https://www.edgesidesolutions.com/ddd-value-objects-with-entity-framework-core/) - [Value Object: a better implementation](https://enterprisecraftsmanship.com/posts/value-object-better-implementation/) ⭐ - [Entity vs Value Object: the ultimate list of differences](https://enterprisecraftsmanship.com/2016/01/11/entity-vs-value-object-the-ultimate-list-of-differences/) ⭐ - [Nesting a Value Object inside an Entity](https://enterprisecraftsmanship.com/2016/08/09/nesting-a-value-object-inside-an-entity/) ⭐ - [Functional C#: Immutability](https://enterprisecraftsmanship.com/posts/functional-c-immutability/) ⭐ - [Functional C#: Primitive obsession](https://enterprisecraftsmanship.com/posts/functional-c-primitive-obsession/) ⭐ - [Functional C#: Non-nullable reference types](https://enterprisecraftsmanship.com/posts/functional-c-non-nullable-reference-types/) ⭐ - [C# 9 Records as DDD Value Objects](https://enterprisecraftsmanship.com/posts/csharp-records-value-objects/) - [Entities, Value Objects, Aggregates and Roots](https://lostechies.com/jimmybogard/2008/05/21/entities-value-objects-aggregates-and-roots/) - [Listing Strongly Typed Enum Options in C#](https://ardalis.com/listing-strongly-typed-enum-options-in-c/) - [Enum Alternatives in C#](https://ardalis.com/enum-alternatives-in-c/) - [Improved Support for Value Objects with EF Core 2.2](https://www.nankov.com/posts/improved-support-value-objects-ef-core-22) - [Value Object](https://jonatandragon.com/value-object) - [Owned Entity Types](https://docs.microsoft.com/en-us/ef/core/modeling/owned-entities) - [DTO vs Value Object vs POCO](https://enterprisecraftsmanship.com/posts/dto-vs-value-object-vs-poco/) - [Value Objects explained](https://enterprisecraftsmanship.com/posts/value-objects-explained/) ⭐ - [Hierarchy of value objects](https://enterprisecraftsmanship.com/posts/hierarchy-value-objects/) - [Representing a collection as a Value Object](https://enterprisecraftsmanship.com/posts/representing-collection-as-value-object/) ⭐ - [Entity vs Value Object: the ultimate list of differences](https://enterprisecraftsmanship.com/posts/entity-vs-value-object-the-ultimate-list-of-differences/) - [C# 9: Value Objects and Simpler Code](https://visualstudiomagazine.com/articles/2021/04/07/csharp-9.aspx) - [Nulls in Value Objects](https://enterprisecraftsmanship.com/posts/nulls-in-value-objects/) ⭐ - [Refactoring to Value Objects](https://ardalis.com/refactoring-value-objects/) - [Practical DDD in Golang: Value Object](https://levelup.gitconnected.com/practical-ddd-in-golang-value-object-4fc97bcad70) - [Using Value Objects with Entity Framework Core](https://levelup.gitconnected.com/using-value-objects-with-entity-framework-core-5cead49dbf9c) - [3 Different Ways to Implement Value Object in C# 10](https://blog.devgenius.io/3-different-ways-to-implement-value-object-in-csharp-10-d8f43e1fa4dc) - [Working with Value Objects](https://ardalis.com/working-with-value-objects/) - [Value Objects: when to create one?](https://enterprisecraftsmanship.com/posts/value-objects-when-to-create-one/) ⭐ - [Immutable Value Objects are simpler and more useful than you think!](https://event-driven.io/en/immutable_value_objects/) - [DateTime as a Value Object](https://ardalis.com/datetime-as-a-value-object/) - [Value Object - DevIQ](https://deviq.com/domain-driven-design/value-object) - [Support for Value Objects in C#](https://ardalis.com/support-for-value-objects-in-csharp/) - [Modern C# Techniques, Part 2: Value Records](https://blog.stephencleary.com/2022/10/modern-csharp-techniques-2-value-records.html) - [[Best practice] C# 9 Records as DDD Value Objects with EF Core 6](https://dev.to/antoniofalcao/best-practice-c-9-records-as-ddd-value-objects-with-ef-core-6-502p) - [The type system is a programmer's best friend](https://dusted.codes/the-type-system-is-a-programmers-best-friend) - [Design Smell: Primitive Obsession by Mark Seemann](https://blog.ploeh.dk/2011/05/25/DesignSmellPrimitiveObsession/) - [From Primitive Obsession to Domain Modelling by Mark Seemann](https://blog.ploeh.dk/2015/01/19/from-primitive-obsession-to-domain-modelling/) - [eShopOnWeb Architecture (2/16) – uses Value Objects to model immutable domain concepts](https://davecallan.com/eshoponweb-uses-value-objects-to-model-immutable-domain-concepts/) - [A Modern Way to Create Value Objects to Solve Primitive Obsession in .NET](https://antondevtips.com/blog/a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net) - [DDD: Value Objects](https://mbarkt3sto.hashnode.dev/ddd-value-objects) ## 📺 Videos - [Treating Primitive Obsession with ValueObjects | DDD in .NET](https://www.youtube.com/watch?v=h4uldNA1JUE) - [The Power of Value - Power Use of Value Objects in Domain Driven Design - Dan Bergh Johnsson](https://www.youtube.com/watch?v=vh-LT1mkIz4) ## 🚀 Samples - [milannankov/EfCoreValueObjects](https://github.com/milannankov/EfCoreValueObjects) - Illustrates support for value object with Entity Framework Core 2.2 - [NimblePros/ValueObjects](https://github.com/NimblePros/ValueObjects) - A collection of Value Object samples for use in DDD projects. ## 📦 Libraries - [Value](https://github.com/tpierrain/Value) - A pico library (or code snippets shed) to help you to easily implement Value Types in your C# projects without making errors nor polluting your domain logic with boiler-plate code. - [ValueOf](https://github.com/mcintyre321/ValueOf) - Deal with Primitive Obsession - define ValueObjects in a single line (of C#). - [WrapperValueObject](https://github.com/martinothamar/WrapperValueObject) - A .NET source generator for creating simple value objects wrapping primitive types. - [Qowaiv](https://github.com/Qowaiv/Qowaiv) - Qowaiv is a Single Value Object library - [jhewlett/ValueObject](https://github.com/jhewlett/ValueObject) - A micro library for easily creating C# classes with value semantics. No need to override Equals, GetHashCode, et all. - [AntonioFalcaoJr/Dotnet6.EFCore6.Record.ValueObjects](https://github.com/AntonioFalcaoJr/Dotnet6.EFCore6.Record.ValueObjects) - This project aims to demonstrate the configuration and use of Records as Value Objects with EF Core 6 - [SteveDunn/Vogen](https://github.com/SteveDunn/Vogen) - A semi-opinionated library which is a source generator and a code analyser. It Source generates Value Objects - [adampaquette/Typely](https://github.com/adampaquette/Typely) - Domain Primitives creation with a fluent Api and built-in validations. Based on a source generator and code analyzer.