Get Distinct Object by Id and Return Full Object with C# and EF

If you’re using Entity Framework Core in C# and you want to retrieve distinct items based on a specific property (e.g., ID) but still return the full object, you can use the GroupBy method along with First or FirstOrDefault. Here’s an example assuming you have a class named YourEntity with a property named Id:

Continue reading “Get Distinct Object by Id and Return Full Object with C# and EF”

Subscribe to EventStore catch-up subscription from the start with C# example

EventStore is an open-source database technology designed for storing, retrieving, and querying event data using a stream-based approach. In EventStore, a catch-up subscription is used to read events from a given point in a stream and catch up to the most recent events. When starting a catch-up subscription, you can specify the starting position using an event number or position. However, in some cases, you might want to start from the beginning or the very first event. Here’s how you can achieve that:

Continue reading “Subscribe to EventStore catch-up subscription from the start with C# example”

Entity Framework (EF) Core FluentApi Relationships without Navigation Properties

Entity Framework (EF) Core allows you to define relationships between entities using Fluent API, even without explicitly creating navigation properties. This can be useful when you want to define relationships between entities but don’t want to create navigation properties in your entity classes. Here’s how you can achieve this:

Continue reading “Entity Framework (EF) Core FluentApi Relationships without Navigation Properties”

Case-insensitive “LIKE” search with EF Core and PostgreSQL

When using EF Core with PostgreSQL for a case-insensitive “LIKE” search, you can leverage PostgreSQL-specific features to achieve the desired behavior. PostgreSQL supports the ILIKE operator, which performs a case-insensitive pattern matching operation. Here’s an example of how to perform a case-insensitive “LIKE” search using EF Core and PostgreSQL:

Continue reading “Case-insensitive “LIKE” search with EF Core and PostgreSQL”

Workaround – Google Sign-In without Google+ API with MVC .NET and Owin

A few years back I created a small custom application for a client that utilized their Google logins for authentication.  The web application was written with ASP.NET MVC and utilized Katana/Owin pipeline.  The common practice to setup that application with Google sign in was to also enable the Google+ API.  If you have done this then like me you have received an email recently that explains, as of March 2019 the Google+ API’s will be shut down.  I have spent the last few days trying to read through the documentation to understand what needs to be done to fix this, without completely switching up the current login flow, however they don’t seem to make this transition easy for .NET applications.  Thankfully I finally found the answer I was looking for, a workaround posted in GitHub comments, to address this exact issue.  For those of you who are in the same boat as me have a look at this comment .  I have made the changes recommended here and I can verify that my Google Sign-In is now working again without the Google+ API enabled.

EventStore HTTP API – Replaying Parked Messages in C# with HttpClient

Eventstore’s competing consumer pattern is implemented through the use of persistent subscriptions.  Competing consumers is a great pattern to use when you need multiple consumers pulling from a single stream with the state of the stream being managed by EventStore.  In order for the consumer to keep receiving messages they must ack/nack the message they received in some way.  The happy path would lead to the consumer being able to process the message and returning an ack back to signify that the message was processed.  If a consumer is unable to process the message, there are multiple options that can be taken, likely ending in the message being parked.  Each subscription group created will have another stream available known as the parked message queue.  Messages which are not acknowledged can be put into this queue for diagnosis later.  Through EventStore’s web ui, you can easily click the replay parked messages link for a particular subscription group.  If there is a need to programmatically replay this queue it can be done through the REST API.

 

Here is an example on how to programmatically invoke the replay parked messages functionality. Continue reading “EventStore HTTP API – Replaying Parked Messages in C# with HttpClient”