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);
𝗛𝗮𝘃𝗲 𝘆𝗼𝘂 𝘁𝗿𝗶𝗲𝗱 𝘂𝘀𝗶𝗻𝗴 .𝗛𝗮𝘀𝗖𝗼𝗻𝘃𝗲𝗿𝘀𝗶𝗼𝗻() 𝗼𝗿 .𝗢𝘄𝗻𝘀𝗢𝗻𝗲() 𝗶𝗻 𝘆𝗼𝘂𝗿 𝗘𝗙 𝗖𝗼𝗿𝗲 𝗽𝗿𝗼𝗷𝗲𝗰𝘁𝘀?
- 𝗛𝗼𝘄 𝗱𝗼 𝘆𝗼𝘂 𝗺𝗼𝗱𝗲𝗹 𝘃𝗮𝗹𝘂𝗲 𝗼𝗯𝗷𝗲𝗰𝘁𝘀 𝗹𝗶𝗸𝗲
𝗦𝗰𝗼𝗿𝗲,𝗥𝗮𝘁𝗶𝗻𝗴, 𝗼𝗿𝗔𝗱𝗱𝗿𝗲𝘀𝘀? - 𝗪𝗵𝗮𝘁 𝗱𝗲𝗹𝗲𝘁𝗲 𝗯𝗲𝗵𝗮𝘃𝗶𝗼𝗿𝘀 𝗱𝗼 𝘆𝗼𝘂 𝗰𝗼𝗺𝗺𝗼𝗻𝗹𝘆 𝗮𝗽𝗽𝗹𝘆 𝗶𝗻 𝗽𝗮𝗿𝗲𝗻𝘁-𝗰𝗵𝗶𝗹𝗱 𝗿𝗲𝗹𝗮𝘁𝗶𝗼𝗻𝘀𝗵𝗶𝗽𝘀?
SOCIAL SHARE CARD GENERATOR