I absolutely forgot about the blog. My bad. Let’s add something interesting about C#.
SharpRepository
SharpRepository is a generic repository written in C# which includes support for various relational, document and object databases including Entity Framework, RavenDB, MongoDB, CouchDB and Db4o. SharpRepository includes Xml and InMemory repository implementations as well. SharpRepository offers built-in caching options for AppFabric, memcached and the standard System.Runtime.Caching. SharpRepository also supports Specifications, FetchStrategies, Batches and Traits.
To install SharpRepository, run the following command in the Package Manager Console
PM> Install-Package SharpRepository.Repository
All information about SharpRepository you can find on github
How to use Include() to include related entities?
One of the most interesting question was about Entity Framework and Include
functionality. For example, you have CurrencyRate
class:
public class CurrencyRate
{
public int Id { get; set; }
public string Name { get; set; }
public int BranchBankId { get; set; }
[ForeignKey("BranchBankId")]
public BankBranch BankBranch { get; set; }
}
And you need to get information about the BankBranch
.
There are 2 general ways to query the repository:
- Use a predicate in query
- Use a
Specification
object that holds predicate.
The equivalent of the EF Include statements are set in a Specification
object and called a FetchStrategy
.
var spec = new Specification<CurrencyRate>(b => b.Name == name);
spec.FetchStrategy.Include(b => b.BankBranch);
CurrencyRate currencyRate;
if (currencyRateRepository.TryFind(spec, out currencyRate))
{
// ... some logic with BankBranch
}