Skip to content

Instantly share code, notes, and snippets.

View DannyRusnok's full-sized avatar

Daniel Rusnok DannyRusnok

View GitHub Profile
public interface IEntity<TKey>
{
TKey Id { get; }
}
public class Order : AggregateRoot
{
public ICollection<OrderItem> Items { get; set; }
public Address Address { get; set; }
}
public abstract class AggregateRoot{
private readonly List<INotification> _domainEvents = new List<INotification>();
public IReadOnlyCollection<INotification> DomainEvents => _domainEvents.AsReadOnly();
public void AddDomainEvent(INotification eventItem)
{
_domainEvents.Add(eventItem);
}
public void RemoveDomainEvent(INotification eventItem)
@DannyRusnok
DannyRusnok / Address.cs
Last active January 7, 2022 16:31
Value Objects Article
public record class Address(string Street, string ZipCode, string City);
/*
EQUALS:
public class Adress{
public string Street { get; init; }
public string ZipCode { get; init; }
public string City { get; init; }
public Address(string street, string zipcode, string city){
@DannyRusnok
DannyRusnok / AppDbContext.cs
Last active January 7, 2022 16:14
Value Objects Article
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
{
configurationBuilder.Properties<Address>().HaveConversion<AddressConverter>();
}
@DannyRusnok
DannyRusnok / AddressConverter.cs
Created January 7, 2022 16:13
Value Objects Article
public class AddressConverter : ValueConverter<Address, string>
{
public AddressConverter()
: base(
v => JsonSerializer.Serialize(v, (JsonSerializerOptions)null),
v => JsonSerializer.Deserialize<Address>(v, (JsonSerializerOptions)null))
{
}
}
@DannyRusnok
DannyRusnok / AddressStructJson.cs
Created January 7, 2022 16:11
Value Objects Article
modelBuilder.Entity<Person>()
.Property(e => e.Address)
.HasConversion(
v => JsonSerializer.Serialize(v, (JsonSerializerOptions)null),
v => JsonSerializer.Deserialize<Address>(v, (JsonSerializerOptions)null));
@DannyRusnok
DannyRusnok / OwnsMany.cs
Created January 7, 2022 16:09
Value Objects Article
b.OwnsMany(x => x.Addresses, sb =>
{
sb.Property(x => x.City)
.HasMaxLength(255)
.HasDefaultValue(string.Empty);
sb.Property(x => x.Street)
.HasMaxLength(255)
.HasDefaultValue(string.Empty);
@DannyRusnok
DannyRusnok / AppDbContext.cs
Created January 7, 2022 16:08
Value Objects Article
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>(b =>
{
public class Person
{
public Guid Id { get; set; }
public string Name { get; set; }
public string LastName { get; set; }
public Address Address { get; set; }
}
public record class Address(string City, string Street, string ZipCode);