Skip to main content
deleted 9 characters in body
Source Link
RMalke
  • 717
  • 3
  • 12

Extending the ORM Context is a good approach, but when I am in a system with lots of predefined queries, I likeuse to take another approach, using Extensions methods in order to group the related queries. Let me give an example:

The usage is kept simple like this:

var data = Context.Financial() // This returns a FinancialContextExtensions instance with all Financial grouped queries .GetComplexReportData() // This returns the actual result for your query .ToArray(); 

I create a file FinancialContextExtensions:

public static partial class ContextQueryExtensions { public static FinancialContextExtensions Financial(this DataContext context) { return new FinancialContextExtensions(context); } } public class FinancialContextExtensions : ContextExtensions { protected readonly DataContext Context; public FinancialContextExtensions(DataContext context) { this.Context = context; } public IEnumerable<FinancialReportInfo> GetComplexReportData(DateTime dateBeing, DateTime dateEnd) { return from a in Context.AAA join b in Context.BBB on ... where ... group ... select new FinancialReportInfo { ... }; } } 

PS: I don't know if this pattern has a name, but a I remember reading it on a site, don't know what site though...

Extending the ORM Context is a good approach, but when I am in system with lots of predefined queries, I like to take another approach, using Extensions methods in order to group the related queries. Let me give an example:

The usage is kept simple like this:

var data = Context.Financial() // This returns a FinancialContextExtensions instance with all Financial grouped queries .GetComplexReportData() // This returns the actual result for your query .ToArray(); 

I create a file FinancialContextExtensions:

public static partial class ContextQueryExtensions { public static FinancialContextExtensions Financial(this DataContext context) { return new FinancialContextExtensions(context); } } public class FinancialContextExtensions : ContextExtensions { protected readonly DataContext Context; public FinancialContextExtensions(DataContext context) { this.Context = context; } public IEnumerable<FinancialReportInfo> GetComplexReportData(DateTime dateBeing, DateTime dateEnd) { return from a in Context.AAA join b in Context.BBB on ... where ... group ... select new FinancialReportInfo { ... }; } } 

PS: I don't know if this pattern has a name, but a I remember reading it on a site, don't know what site though...

Extending the ORM Context is a good approach, but in a system with lots of predefined queries, I use to take another approach, using Extensions methods in order to group the related queries. Let me give an example:

The usage is kept simple like this:

var data = Context.Financial() // This returns a FinancialContextExtensions instance with all Financial grouped queries .GetComplexReportData() // This returns the actual result for your query .ToArray(); 

I create a file FinancialContextExtensions:

public static partial class ContextQueryExtensions { public static FinancialContextExtensions Financial(this DataContext context) { return new FinancialContextExtensions(context); } } public class FinancialContextExtensions : ContextExtensions { protected readonly DataContext Context; public FinancialContextExtensions(DataContext context) { this.Context = context; } public IEnumerable<FinancialReportInfo> GetComplexReportData(DateTime dateBeing, DateTime dateEnd) { return from a in Context.AAA join b in Context.BBB on ... where ... group ... select new FinancialReportInfo { ... }; } } 

PS: I don't know if this pattern has a name, but a I remember reading it on a site, don't know what site though...

deleted 30 characters in body
Source Link
Robert Harvey
  • 200.7k
  • 55
  • 470
  • 683

As @mortalapeman pointed out, extendingExtending the ORM Context is a good approach, but when I am in system with lots of predefined queries, I like to take another approach, using Extensions methods in order to group the related queries. Let me give an example:

The usage is kept simple like this:

var data = Context.Financial() // This returns a FinancialContextExtensions instance with all Financial grouped queries .GetComplexReportData() // This returns the actual result for your query .ToArray(); 

I create a file FinancialContextExtensions:

public static partial class ContextQueryExtensions { public static FinancialContextExtensions Financial(this DataContext context) { return new FinancialContextExtensions(context); } } public class FinancialContextExtensions : ContextExtensions { protected readonly DataContext Context; public FinancialContextExtensions(DataContext context) { this.Context = context; } public IEnumerable<FinancialReportInfo> GetComplexReportData(DateTime dateBeing, DateTime dateEnd) { return from a in Context.AAA join b in Context.BBB on ... where ... group ... select new FinancialReportInfo { ... }; } } 

PS: I don't know if this pattern has a name, but a I remember reading it on a site, don't know what site though...

As @mortalapeman pointed out, extending the ORM Context is a good approach, but when I am in system with lots of predefined queries, I like to take another approach, using Extensions methods in order to group the related queries. Let me give an example:

The usage is kept simple like this:

var data = Context.Financial() // This returns a FinancialContextExtensions instance with all Financial grouped queries .GetComplexReportData() // This returns the actual result for your query .ToArray(); 

I create a file FinancialContextExtensions:

public static partial class ContextQueryExtensions { public static FinancialContextExtensions Financial(this DataContext context) { return new FinancialContextExtensions(context); } } public class FinancialContextExtensions : ContextExtensions { protected readonly DataContext Context; public FinancialContextExtensions(DataContext context) { this.Context = context; } public IEnumerable<FinancialReportInfo> GetComplexReportData(DateTime dateBeing, DateTime dateEnd) { return from a in Context.AAA join b in Context.BBB on ... where ... group ... select new FinancialReportInfo { ... }; } } 

PS: I don't know if this pattern has a name, but a I remember reading it on a site, don't know what site though...

Extending the ORM Context is a good approach, but when I am in system with lots of predefined queries, I like to take another approach, using Extensions methods in order to group the related queries. Let me give an example:

The usage is kept simple like this:

var data = Context.Financial() // This returns a FinancialContextExtensions instance with all Financial grouped queries .GetComplexReportData() // This returns the actual result for your query .ToArray(); 

I create a file FinancialContextExtensions:

public static partial class ContextQueryExtensions { public static FinancialContextExtensions Financial(this DataContext context) { return new FinancialContextExtensions(context); } } public class FinancialContextExtensions : ContextExtensions { protected readonly DataContext Context; public FinancialContextExtensions(DataContext context) { this.Context = context; } public IEnumerable<FinancialReportInfo> GetComplexReportData(DateTime dateBeing, DateTime dateEnd) { return from a in Context.AAA join b in Context.BBB on ... where ... group ... select new FinancialReportInfo { ... }; } } 

PS: I don't know if this pattern has a name, but a I remember reading it on a site, don't know what site though...

Source Link
RMalke
  • 717
  • 3
  • 12

As @mortalapeman pointed out, extending the ORM Context is a good approach, but when I am in system with lots of predefined queries, I like to take another approach, using Extensions methods in order to group the related queries. Let me give an example:

The usage is kept simple like this:

var data = Context.Financial() // This returns a FinancialContextExtensions instance with all Financial grouped queries .GetComplexReportData() // This returns the actual result for your query .ToArray(); 

I create a file FinancialContextExtensions:

public static partial class ContextQueryExtensions { public static FinancialContextExtensions Financial(this DataContext context) { return new FinancialContextExtensions(context); } } public class FinancialContextExtensions : ContextExtensions { protected readonly DataContext Context; public FinancialContextExtensions(DataContext context) { this.Context = context; } public IEnumerable<FinancialReportInfo> GetComplexReportData(DateTime dateBeing, DateTime dateEnd) { return from a in Context.AAA join b in Context.BBB on ... where ... group ... select new FinancialReportInfo { ... }; } } 

PS: I don't know if this pattern has a name, but a I remember reading it on a site, don't know what site though...