DEV Community

Supraja Tangella
Supraja Tangella

Posted on

๐—•๐˜‚๐—ถ๐—น๐—ฑ๐—ถ๐—ป๐—ด ๐— ๐˜† ๐—˜๐—บ๐—ฝ๐—น๐—ผ๐˜†๐—ฒ๐—ฒ ๐—ฃ๐—ฒ๐—ฟ๐—ณ๐—ผ๐—ฟ๐—บ๐—ฎ๐—ป๐—ฐ๐—ฒ ๐—ฅ๐—ฒ๐˜ƒ๐—ถ๐—ฒ๐˜„ ๐—ฆ๐˜†๐˜€๐˜๐—ฒ๐—บ โ€“ ๐—ž๐—ฒ๐˜† ๐—˜๐—™ ๐—–๐—ผ๐—ฟ๐—ฒ ๐—œ๐—ป๐˜€๐—ถ๐—ด๐—ต๐˜๐˜€ ๐—Ÿ๐—ฒ๐—ฎ๐—ฟ๐—ป๐—ฒ๐—ฑ ๐—ง๐—ผ๐—ฑ๐—ฎ๐˜†

While working on my personal project ๐—˜๐—บ๐—ฝ๐—น๐—ผ๐˜†๐—ฒ๐—ฒ ๐—ฃ๐—ฒ๐—ฟ๐—ณ๐—ผ๐—ฟ๐—บ๐—ฎ๐—ป๐—ฐ๐—ฒ ๐—ฅ๐—ฒ๐˜ƒ๐—ถ๐—ฒ๐˜„ ๐—ฆ๐˜†๐˜€๐˜๐—ฒ๐—บ, I explored some valuable EF Core configurations. Hereโ€™s a quick summary of what I learned:

  • .๐—›๐—ฎ๐˜€๐—–๐—ผ๐—ป๐˜ƒ๐—ฒ๐—ฟ๐˜€๐—ถ๐—ผ๐—ป()

Used to store value objects like ReviewScore as simple types in the database:
builder.Property(r => r.Score).HasConversion(v => v.Value, v => new ReviewScore(v));

๐—ฃ๐˜‚๐—ฟ๐—ฝ๐—ผ๐˜€๐—ฒ: Simplifies storing custom value objects (like Score) as primitive values (like int).

  • .๐—ข๐˜„๐—ป๐˜€๐—ข๐—ป๐—ฒ()

Used for complex owned types like Address within the Employee model:
builder.OwnsOne(e => e.Address, a => a.Property(p => p.City));

๐—ฃ๐˜‚๐—ฟ๐—ฝ๐—ผ๐˜€๐—ฒ: Embeds value objects directly into the same table when they donโ€™t need a separate identity.

  • .๐—›๐—ฎ๐˜€๐— ๐—ฎ๐—ป๐˜†(), .๐—ช๐—ถ๐˜๐—ต๐—ข๐—ป๐—ฒ(), ๐—ฎ๐—ป๐—ฑ ๐——๐—ฒ๐—น๐—ฒ๐˜๐—ฒ๐—•๐—ฒ๐—ต๐—ฎ๐˜ƒ๐—ถ๐—ผ๐—ฟ

Configured relationships with delete behaviors:
builder.HasMany(e => e.Reviews).WithOne(r => r.Employee).OnDelete(DeleteBehavior.Cascade);
builder.HasMany(e => e.Goals).WithOne().OnDelete(DeleteBehavior.NoAction);

๐—ฃ๐˜‚๐—ฟ๐—ฝ๐—ผ๐˜€๐—ฒ: Controls how dependent entities behave when their parent (e.g., Employee) is deleted.

  • ๐—™๐—ฒ๐—ฒ๐—ฑ๐—ฏ๐—ฎ๐—ฐ๐—ธ ๐—บ๐—ผ๐—ฑ๐—ฒ๐—น ๐—ฐ๐—ผ๐—ป๐—ณ๐—ถ๐—ด๐˜‚๐—ฟ๐—ฎ๐˜๐—ถ๐—ผ๐—ป

Maintained a clean foreign key relationship:
builder.HasOne(f => f.Employee).WithMany(e => e.Feedbacks).HasForeignKey(f => f.EmployeeId);

๐—›๐—ฎ๐˜ƒ๐—ฒ ๐˜†๐—ผ๐˜‚ ๐˜๐—ฟ๐—ถ๐—ฒ๐—ฑ ๐˜‚๐˜€๐—ถ๐—ป๐—ด .๐—›๐—ฎ๐˜€๐—–๐—ผ๐—ป๐˜ƒ๐—ฒ๐—ฟ๐˜€๐—ถ๐—ผ๐—ป() ๐—ผ๐—ฟ .๐—ข๐˜„๐—ป๐˜€๐—ข๐—ป๐—ฒ() ๐—ถ๐—ป ๐˜†๐—ผ๐˜‚๐—ฟ ๐—˜๐—™ ๐—–๐—ผ๐—ฟ๐—ฒ ๐—ฝ๐—ฟ๐—ผ๐—ท๐—ฒ๐—ฐ๐˜๐˜€?

  • ๐—›๐—ผ๐˜„ ๐—ฑ๐—ผ ๐˜†๐—ผ๐˜‚ ๐—บ๐—ผ๐—ฑ๐—ฒ๐—น ๐˜ƒ๐—ฎ๐—น๐˜‚๐—ฒ ๐—ผ๐—ฏ๐—ท๐—ฒ๐—ฐ๐˜๐˜€ ๐—น๐—ถ๐—ธ๐—ฒ ๐—ฆ๐—ฐ๐—ผ๐—ฟ๐—ฒ, ๐—ฅ๐—ฎ๐˜๐—ถ๐—ป๐—ด, ๐—ผ๐—ฟ ๐—”๐—ฑ๐—ฑ๐—ฟ๐—ฒ๐˜€๐˜€?
  • ๐—ช๐—ต๐—ฎ๐˜ ๐—ฑ๐—ฒ๐—น๐—ฒ๐˜๐—ฒ ๐—ฏ๐—ฒ๐—ต๐—ฎ๐˜ƒ๐—ถ๐—ผ๐—ฟ๐˜€ ๐—ฑ๐—ผ ๐˜†๐—ผ๐˜‚ ๐—ฐ๐—ผ๐—บ๐—บ๐—ผ๐—ป๐—น๐˜† ๐—ฎ๐—ฝ๐—ฝ๐—น๐˜† ๐—ถ๐—ป ๐—ฝ๐—ฎ๐—ฟ๐—ฒ๐—ป๐˜-๐—ฐ๐—ต๐—ถ๐—น๐—ฑ ๐—ฟ๐—ฒ๐—น๐—ฎ๐˜๐—ถ๐—ผ๐—ป๐˜€๐—ต๐—ถ๐—ฝ๐˜€?

Top comments (0)