Giter Site home page Giter Site logo

Comments (3)

gt4dev avatar gt4dev commented on May 20, 2024

I found answer in IDDD book on page 185.

It allows to identify entities with strategy of 'late identity assignment', before main identity is assigned.
It's VO-like equals. Especially useful in Sets.

from iddd_samples.

VaughnVernon avatar VaughnVernon commented on May 20, 2024

@gt4dev No. It's because the tenantId and productId are a composite id, but not held as one. In a SaaS with multiple tenants all entities must be "striped" with the tenantId. They are separated so the tenant is clearly identified and can be queried on its own.

from iddd_samples.

gt4dev avatar gt4dev commented on May 20, 2024

I know, it's just a sample but
as identity is top important in entities let me ask sth.

Generalizing IDDD sample code:
When I 1st time saw Thing with ThingId then I thought that ThingId is just id of thing [common sense]
But it's not (as ID needs TenantId)

From my PoV clearer would be [in saasovation context]

  1. either create VO ThingId - which hides all inner elements: id of particular thing + all striping id-s [tenant, product ...] etc
  2. or rename ThingId to sth like ThingRawId or ThingUnstripedId - to explicitly express in name that it's not real id

What do think you about it, especially point 1?

IMO with "1"

  • model [and code] is simpler
  • still you can do all searches for "things" by tenant etc. as is done in current IDDD sample
    It's even more cleared when ID is more complex [like in eg BacklogItem where ID is build from 3 IDs].

BTW
It's late answer, but in the meantime I've been sharpening my DDD skills ;]
Doing study notes https://github.com/gt4dev/study-notes

Your and Evans books are big big changers. Thanks!

from iddd_samples.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.