Hi,
Let's use an entity with external types (in my case NodaTime). I use Postgres with Nodatime converters from Npgsql.NodaTime package (which provides not only mapping between Postgres types and Noda types but also allows query by these)
Here is an entity:
class Entity
{
public LocalDate Date {get; set;}
public LocalTime? Time {get;set:}
}
I would like to query Date and Time using dynamic Linq expression.
var list = entities
.Where("Date >= @0", date)
.ToList();
By default, it's not possible, the code above throws NotSupportedException. It can be easily solved using type converters.
TypeDescriptor.AddAttributes(typeof(LocalDate), new TypeConverterAttribute(typeof(LocalDateConverter)));
TypeDescriptor.AddAttributes(typeof(LocalTime), new TypeConverterAttribute(typeof(LocalTimeConverter)));
Then it works as expected... Almost.
The problem is that TypeDescriptor.AddAttributes adds converters globally which affects many places (like Newtonsoft JSON serializer) in a stable, working legacy system. It's very risky, I would like to avoid this way.
Is there any different approach how to register converter for custom type?
Here. list of package details I use:
<PackageReference Include="Microsoft.EntityFrameworkCore.DynamicLinq" Version="3.2.6" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.1.4" />
<PackageReference Include="Npgsql.NodaTime" Version="4.1.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.4" />
Hi,
Let's use an entity with external types (in my case
NodaTime). I use Postgres with Nodatime converters fromNpgsql.NodaTime package(which provides not only mapping between Postgres types and Noda types but also allows query by these)Here is an entity:
I would like to query
DateandTimeusing dynamic Linq expression.By default, it's not possible, the code above throws
NotSupportedException. It can be easily solved using type converters.Then it works as expected... Almost.
The problem is that
TypeDescriptor.AddAttributesadds converters globally which affects many places (like Newtonsoft JSON serializer) in a stable, working legacy system. It's very risky, I would like to avoid this way.Is there any different approach how to register converter for custom type?
Here. list of package details I use: