Writing Flexible Entity Framework Methods with Set
Every once in a while I find myself writing one set of code to do something to the Customers collection and then writing almost identical code work with the Orders collection. When I spot that duplicate code, I use the Set method on the DbContext object to find the collection of entities I want and write the code once. I just pass the Type of the object I want to the Set method.
For instance, I could write code like this to work with the Orders collection:
res = ctx.Orders
If I use the Set method, I just have to pass the type of the entity in the collection. For the Orders collection, that's the Order class:
res = ctx.Set(GetType(Order))
You can use the Set method to create general purpose methods in at least two ways. First, you can pass the type of the object to a method that accesses the DbContext object:
Public Sub MyMethod(EntityType As Type)
res = ctx.Set(EntityType)
'…code to work with the collection
End Sub
Alternatively, you can write a generic method and pass the type when you call the method:
Public Sub MyMethod(of T As Class)()
res = ctx.Set(GetType(T))
End Sub
Posted by Peter Vogel on 05/30/2014 at 9:58 AM