ドメインモデリング
ใใกใคใณ้งๅ่จญ่จใขใใชใฑใผใทใงใณใฎไธญๅฟใซใฏใใทในใใ ใฎไธญๆ ธ็ใช็ฅ่ญใจใใธใในใซใผใซใ่กจใใขใใซใใใใพใใใใกใคใณใ้ฉๅใซใขใใชใณใฐใใใใจใฏใ็พๅฎไธ็ใฎๆฆๅฟตใ่กจ็พๅ่ฑใใงใไธ่ฒซๆงใใใใใพใจใพใใฎใใใฝใใใฆใงใขๆง้ ใซๅคๆใใใใจใๆๅณใใพใใ
ใจใณใใฃใใฃ
ใจใณใใฃใใฃใจใฏใไธปใซใใฎ่ญๅฅๆงใซใใฃใฆๅฎ็พฉใใใใชใใธใงใฏใใงใใใๅใซๅฑๆงใ ใใงๅฎ็พฉใใใใใฎใงใฏใใใพใใใ ๅฑๆงใๆ้ใฎ็ต้ใจใจใใซๅคใใฃใฆใใใจใณใใฃใใฃใฎ่ญๅฅๆงใฏๅคใใใพใใใ
ไธปใช็นๅพด๏ผ
- ไธๆใฎ่ญๅฅๅญใๆใค๏ผ้ๅธธใฏ
Id
๏ผใ - ้่ฆใชใฎใฏใจใณใใฃใใฃใไฝใๅซใใงใใใใงใฏใชใใ่ชฐใงใใใใงใใ
- ๅฑๆงใฏๆ้ใจใจใใซๅคๅใใใใจใใใใพใใ
Linoใงใจใณใใฃใใฃใไฝๆใใ
Linoใไฝฟใฃใฆๆฐใใใจใณใใฃใใฃใไฝๆใใใซใฏใไปฅไธใๅฎ่กใใพใ๏ผ
lino entity new
CLIใฆใฃใถใผใใไปฅไธใๅฐใญใพใ๏ผ
- ใตใผใใน โ ใจใณใใฃใใฃใไฝๆใใใตใผใในใ
- ใขใธใฅใผใซ โ ใจใณใใฃใใฃใไฝๆใใใขใธใฅใผใซ๏ผใขใธใฅใฉใผใตใผใในใฎๅ ดๅ๏ผใ
- ใจใณใใฃใใฃๅ โ ใใกใคใณใใใณใใผใฟใใผในใใผใใซใงไฝฟ็จใใใๅๅใ
ใใฎๅพใๅใใฃใผใซใใ่จญๅฎใใฆใจใณใใฃใใฃใๆงๆใใพใใ
ๅฉ็จๅฏ่ฝใชใใฃใผใซใใฟใคใ
ใฟใคใ | ่ชฌๆ | ็ฏๅฒ๏ผๅ่ |
---|---|---|
short | 16ใใใๆดๆฐ | -32,768 ๏ฝ 32,767 |
int | 32ใใใๆดๆฐ | -2,147,483,648 ๏ฝ 2,147,483,647 |
long | 64ใใใๆดๆฐ | -9,223,372,036,854,775,808 ๏ฝ 9,223,372,036,854,775,807 |
string | ใใญในใ | ็ด20ๅๆๅญใพใง |
bool | ็ๅฝๅค | true ใพใใฏ false |
Guid | ใฐใญใผใใซไธๆ่ญๅฅๅญ | ๅๆฃไธๆๆง |
decimal | ้ซ็ฒพๅบฆๅฐๆฐ | ้่ๅคใซๆ้ฉ |
float | ๆตฎๅๅฐๆฐ็นๆฐ๏ผ32ใใใ๏ผ | ็ด6๏ฝ9ๆกใฎ็ฒพๅบฆ |
double | ๆตฎๅๅฐๆฐ็นๆฐ๏ผ64ใใใ๏ผ | ็ด15๏ฝ17ๆกใฎ็ฒพๅบฆ |
DateTime | ๆฅๆ | ใฟใคใ ใพใผใณๅซใ |
DateOnly | ๆฅไปใฎใฟ (C# 10+) | โ |
TimeOnly | ๆ้ใฎใฟ (C# 10+) | โ |
Entity | ๅฅใฎใจใณใใฃใใฃใธใฎๅ็ ง | 1๏ผ1 ใพใใฏ 1๏ผN |
Value Object | ไธๅคใฎๅคใชใใธใงใฏใ | ไพ๏ผไฝๆใCPF |
Enum | ๅๆๅ | ๅบๅฎใใใๅคใฎ้ๅ |
List<Entity> | ใจใณใใฃใใฃใฎใชในใ | 1๏ผN |
ManyToMany | ๅคๅฏพๅค | ็ตๅใใผใใซใๅฟ ่ฆ |
ไพ
Person
ใจใณใใฃใใฃใไฝๆใใไพ๏ผ
โโโโโโฌโโโโโฌโโโโโโโโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ โ PK โ FK โ Property name โ Type โ Length โ Required โ Auto-increment โ โโโโโโผโโโโโผโโโโโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโค โ x โ โ Id โ int โ โ x โ x โ โโโโโโผโโโโโผโโโโโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโค โ โ โ Name โ string โ 100 โ x โ โ โโโโโโดโโโโโดโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโ
Linoใซใใฃใฆ็ๆใใใๆง้ :
MyApp/ โโโ src/ โโโ Services/ โโโ MyService/ โโโ Domain/ โโโ MyApp.MyService.Domain.csproj โโโ Aggregates/ โโโ People/ โโโ Person.cs โโโ Errors/ โ โโโ PersonErrors.cs โโโ Repositories/ โ โโโ IPersonRepository.cs โโโ Resources/ โโโ Person/ โโโ PersonResources.resx โโโ PersonResources.en.resx โโโ PersonResources.pt-BR.resx
ใจใณใใฃใใฃใๅฎ็พฉใใๅพใLinoใไฝฟใฃใฆMigrationsใ็ฎก็ใใใใผใฟใใผในใๅๆใใใพใใ ใใฎใใญใปในใฏใๆฐธ็ถๅใฌใคใคใผใใปใฏใทใงใณใง่ฉณใใ่ชฌๆใใพใใ
ๅคใชใใธใงใฏใ
ๅคใชใใธใงใฏใใฏใใใฎๅฑๆงใฎใฟใงๅฎ็พฉใใใใใกใคใณใฎๆฆๅฟตใ่กจใใๅบๆใฎ่ญๅฅๅญใๆใกใพใใใใในใฆใฎๅคใๅใๅ ดๅใไบใคใฎๅคใชใใธใงใฏใใฏ็ญใใใจ่ฆใชใใใพใใ
ไธปใช็นๅพด๏ผ
- ไฝๆๅพใฏไธๅคใงใใ
Id
ใๆใกใพใใใ
Linoใงๅคใชใใธใงใฏใใไฝๆใใ
ๆฌกใๅฎ่กใใฆใใ ใใ๏ผ
lino value-object new
CLIใฏไปฅไธใๅฐใญใพใ๏ผ
- ใตใผใใน โ ใชใใธใงใฏใใไฝๆใใใตใผใในใ
- ใขใธใฅใผใซ โ ใชใใธใงใฏใใไฝๆใใใขใธใฅใผใซ๏ผใขใธใฅใผใซใตใผใในใฎใฟ๏ผใ
- ๅ ดๆ โ ใใกใคใณใซใผใใพใใฏ็นๅฎใฎใขใฐใชใฒใผใใ
- ๅคใชใใธใงใฏใๅใ
ๆฌกใซใใชใใธใงใฏใใๆงๆใใใใฃใผใซใใๅฎ็พฉใใพใใ
ๅฉ็จๅฏ่ฝใชใใฃใผใซใใฟใคใ
ใฟใคใ | ่ชฌๆ | ๅ่ |
---|---|---|
short | 16ใใใๆดๆฐ | -32,768 โ 32,767 |
int | 32ใใใๆดๆฐ | -2,147,483,648 โ 2,147,483,647 |
long | 64ใใใๆดๆฐ | -9,223,372,036,854,775,808 โ 9,223,372,036,854,775,807 |
string | ใใญในใ | ็ด20ๅๆๅญใพใง |
bool | ใใผใซๅค | true /false |
decimal | ๆญฃ็ขบใชๅฐๆฐ | ้้ญ็ใชๅค |
float | ๆตฎๅๅฐๆฐ็นๆฐ (32ใใใ) | ็ด6๏ฝ9ๆก |
double | ๆตฎๅๅฐๆฐ็นๆฐ (64ใใใ) | ็ด15๏ฝ17ๆก |
DateTime | ๆฅไป/ๆๅป | ใฟใคใ ใพใผใณๅซใ |
DateOnly | ๆฅไปใฎใฟ | C# 10ไปฅไธ |
TimeOnly | ๆๅปใฎใฟ | C# 10ไปฅไธ |
ไพ
ๅคใชใใธใงใฏใ Address
:
โโโโโโโโโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโโโโ โ Property name โ Type โ Length โ Required โ โโโโโโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโค โ Street โ string โ 100 โ x โ โโโโโโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโค โ Number โ string โ 10 โ x โ โโโโโโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโค โ Neighborhood โ string โ 50 โ โ โโโโโโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโค โ City โ string โ 100 โ x โ โโโโโโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโค โ State โ string โ 2 โ x โ โโโโโโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโค โ PostalCode โ string โ 20 โ x โ โโโโโโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโค โ Country โ string โ 100 โ x โ โโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโโ
็ๆใใใใใกใคใซๆง้ ๏ผใขใฐใชใฒใผใ Person
๏ผ๏ผ
MyApp/ โโโ src/ โโโ Services/ โโโ MyService/ โโโ Domain/ โโโ MyApp.MyService.Domain.csproj โโโ Aggregates/ โโโ People/ โโโ Person.cs โโโ ValueObjects/ โ โโโ Address.cs โโโ Errors/ โ โโโ AddressErrors.cs โ โโโ PersonErrors.cs โโโ Repositories/ โ โโโ IPersonRepository.cs โโโ Resources/ โโโ Address/ โ โโโ AddressResources.resx โ โโโ AddressResources.en.resx โ โโโ AddressResources.pt-BR.resx โโโ Person/ โโโ PersonResources.resx โโโ PersonResources.en.resx โโโ PersonResources.pt-BR.resx
ใจใณใใฃใใฃใจๅๆงใซใMigrationsใฏLinoใซใใฃใฆ็ฎก็ใใใใใผใฟใขใใซใฎๅๆใ็ถญๆใงใใพใใ
ๅๆๅ
DDDใซใใใๅๆๅใฏใC#ใฎๅพๆฅใฎenum
ใ่ถ
ใใใใจใใงใใพใใ็ถๆ
ใ่กจใใชใใใชใชใใธใงใฏใใงใใใ
ใใชใใผใทใงใณใ่ฃๅฉใกใฝใใใใใใซใฏๆฏใ่ใใๅซใใใจใๅฏ่ฝใงใใ
ๅๆฉ๏ผ
- C#ใฎ
enum
ใฏๆดๆฐใพใใฏๆๅญๅใฎๅคใซ้ๅฎใใใฆใใพใใ - ใฏใฉในใจใใฆๅๆๅใใขใใซๅใใใใจใงใใใๆ่ปใง่กจ็พๅ่ฑใใช่จญ่จใๅฏ่ฝใซใชใใพใใ
ไธปใช็นๅพด๏ผ
- ๅ
ฑ้ใฎๅบๅบใฏใฉในใ็ถๆฟใใ
Id
ใจๅๅ
ใใซใใปใซๅใใใฏใฉในใงใใ - ใใชใใผใทใงใณใ่ฃๅฉใกใฝใใใๆฏใ่ใใ่ฟฝๅ ใงใใพใใ
Linoใงๅๆๅใไฝๆใใ
ไปฅไธใฎใณใใณใใๅฎ่กใใฆใใ ใใ๏ผ
lino enum new
ใฆใฃใถใผใใงใฏไปฅไธใๅฐใญใใใพใ๏ผ
- ใตใผใในใ
- ใขใธใฅใผใซ๏ผ่ฉฒๅฝใใๅ ดๅ๏ผใ
- ๅ ดๆ โ ใใกใคใณใฎใซใผใใพใใฏใขใฐใชใฒใผใใ
- ๅๆๅใฎๅๅใ
- ใฟใคใ โ ๅพๆฅใฎ
enum
ใในใใผใ Enum๏ผclass
๏ผใ - ใใผใฟใใผในใงใฎไฟๅญๆนๆณ โ
int
ใพใใฏstring
ใ
ไพ
PersonStatus
ๅๆๅ๏ผ
โโโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ โ Value โ Name โ Display Name โ โโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโโโโค โ 1 โ Active โ Active โ โโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโโโโค โ 2 โ Inactive โ Inactive โ โโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโโโโค โ 3 โ Suspended โ Suspended โ โโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโโโโค โ 4 โ Deleted โ Deleted โ โโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโโโ
็ๆใใใๆง้ ๏ผ
MyApp/ โโโ src/ โโโ Services/ โโโ MyService/ โโโ Domain/ โโโ MyApp.MyService.Domain.csproj โโโ Aggregates/ โโโ People/ โโโ Person.cs โโโ Enums/ โ โโโ PersonStatus.cs โโโ ValueObjects/ โ โโโ Address.cs โโโ Errors/ โ โโโ AddressErrors.cs โ โโโ PersonErrors.cs โโโ Repositories/ โ โโโ IPersonRepository.cs โโโ Resources/ โโโ Address/ โ โโโ AddressResources.resx โ โโโ AddressResources.en.resx โ โโโ AddressResources.pt-BR.resx โโโ Person/ โ โโโ PersonResources.resx โ โโโ PersonResources.en.resx โ โโโ PersonResources.pt-BR.resx โโโ PersonStatus/ โโโ PersonStatusResources.resx โโโ PersonStatusResources.en.resx โโโ PersonStatusResources.pt-BR.resx
ๅๆๅใฎๅคใstring
ใจใใฆไฟๅญใใใใจใๅฏ่ฝใงใๅฏ่ชญๆงใๅไธใใพใใใ
ใใใฉใผใใณในใในใใฌใผใธๅน็ใงใฏๅฃใใใจใใใใพใใ
ใใฎใใใint
ใจใใฆไฟๅญใใๆดๅๆงใฎ็ถญๆใไฟๅฎๆงๅไธใฎใใใซใ
ๅๆๅใฎๅคใไธปใญใผใจใใ่ฃๅฉ็ใชใจใณใใฃใใฃ๏ผใใผใใซ๏ผใไฝๆใใใใจใๆจๅฅจใใพใใ
ๅๆๅใๅฎ็พฉใใๅพใฏใLinoใไฝฟใฃใฆMigrationsใ็ๆใป้ฉ็จใใ ใใผใฟใใผในใใใกใคใณใขใใซใๅๆ ใใใใใซใใฆใใ ใใใ ่ฉณ็ดฐใฏๆฐธ็ถๅๅฑคใฎใปใฏใทใงใณใง่ชฌๆใใพใใ