C
C#2y ago
Naster

✅ Generic nullable type

I have an interface ITypelyValue<TValue, TTypelyValue> that let me create validated value objects. I need to convert theses types using a ValueConverter for EF Core.
public class TypelyValueConverter<TValue, TTypelyValue> : ValueConverter<TTypelyValue, TValue>
where TTypelyValue : ITypelyValue<TValue, TTypelyValue>
{
public TypelyValueConverter()
: base(
v => v.Value,
v => TypelyValue.From<TValue, TTypelyValue>(v))
{
}
}
public class TypelyValueConverter<TValue, TTypelyValue> : ValueConverter<TTypelyValue, TValue>
where TTypelyValue : ITypelyValue<TValue, TTypelyValue>
{
public TypelyValueConverter()
: base(
v => v.Value,
v => TypelyValue.From<TValue, TTypelyValue>(v))
{
}
}
This works fine for value types. e.g. public struct MyValueObject : ITypelyValue<int, MyValueObject>{...}. With an entity :
public class MyEntity
{
public MyValueObject Prop1 {get; set;} //ok
public MyValueObject? Prop2 {get; set;} //Error
}
public class MyEntity
{
public MyValueObject Prop1 {get; set;} //ok
public MyValueObject? Prop2 {get; set;} //Error
}
When I make my value object nullable, the property becomes a reference type and I'm confused of how I can handle saving a null value to the database with the type converter. Other ref: https://github.com/adampaquette/Typely/blob/main/src/Typely.Core/ITypelyValue.cs
GitHub
Typely/ITypelyValue.cs at main · adampaquette/Typely
Typely lets you create types easily with a fluent API to embrace Domain-driven design and value objects. - Typely/ITypelyValue.cs at main · adampaquette/Typely
1 Reply
Naster
NasterOP2y ago
Turns out EF Core don't call the converter with null values. I don't need to do anything special.
Want results from more Discord servers?
Add your server