PageRenderTime 96ms CodeModel.GetById 29ms RepoModel.GetById 1ms app.codeStats 0ms

/EntModApp.Templates/DataAccess/ImplEFCF/DataModelRepository.ttinclude

http://entmodapp.codeplex.com
Unknown | 476 lines | 408 code | 68 blank | 0 comment | 0 complexity | 49b5c13bf41705b53975ee9e52275870 MD5 | raw file
  1. <#+
  2. protected class QueryableEntityImplEFCFRepositoy : DataModelBaseTemplate<EntityType>
  3. {
  4. public QueryableEntityImplEFCFRepositoy(EntityType model, XmlMap<string, object> map) : base (model, map) { }
  5. protected override void TransformOverride()
  6. {
  7. #>
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Data.Entity;
  11. using System.Linq;
  12. using System.Linq.Expressions;
  13. using EntModApp.EntServices;
  14. using EntModApp.EntServices.Data;
  15. using <#= DMPublicNames.DataAccessAbstractionsNamespace(this) #>;
  16. namespace <#= DMPublicNames.DataAccessImplEFCFNamespace(this) #>
  17. {
  18. public partial class Queryable<#= POCOName(Model) #>Repository :
  19. <#+ if (Model.BaseEntityTypeRef == null) { #>
  20. DbContextQueryableRepository<<#= Model.DataModel.Name #>DbContext, <#= POCOName(Model) #>>,
  21. <#+ } else { #>
  22. DbContextQueryableRepository<<#= Model.DataModel.Name #>DbContext, <#= POCOName(Model.RootEntityType) #>, <#= POCOName(Model) #>>,
  23. <#+ } #>
  24. IQueryable<#= POCOName(Model) #>Repository
  25. {
  26. public Queryable<#= POCOName(Model) #>Repository(<#= Model.DataModel.Name #>DbContext context)
  27. : this(context, false)
  28. {
  29. }
  30. public Queryable<#= POCOName(Model) #>Repository()
  31. : this(new <#= Model.DataModel.Name #>DbContext(), true)
  32. {
  33. }
  34. protected Queryable<#= POCOName(Model) #>Repository(<#= Model.DataModel.Name #>DbContext context, bool ownContext)
  35. : base(context, context.<#= Model.RootEntityType.EntitySetName #>, ownContext)
  36. {
  37. }
  38. }
  39. }
  40. <#+ }
  41. }
  42. protected class ManualQueryableEntityImplEFCFRepositoy : DataModelBaseTemplate<EntityType>
  43. {
  44. public ManualQueryableEntityImplEFCFRepositoy(EntityType model, XmlMap<string, object> map) : base (model, map) { }
  45. protected override void TransformOverride()
  46. {
  47. #>
  48. using System;
  49. using System.Collections.Generic;
  50. using EntModApp.EntServices;
  51. using EntModApp.EntServices.Data;
  52. using <#= DMPublicNames.DataAccessAbstractionsNamespace(this) #>;
  53. namespace <#= DMPublicNames.DataAccessImplEFCFNamespace(this) #>
  54. {
  55. public partial class Queryable<#= POCOName(Model) #>Repository
  56. {
  57. }
  58. }
  59. <#+ }
  60. }
  61. protected class DataEntityImplEFCFRepositoy : DataModelBaseTemplate<EntityType>
  62. {
  63. public DataEntityImplEFCFRepositoy(EntityType model, XmlMap<string, object> map) : base (model, map) { }
  64. protected override void TransformOverride()
  65. {
  66. #>
  67. using System;
  68. using System.Collections.Generic;
  69. using System.Linq;
  70. using EntModApp.EntServices;
  71. using EntModApp.EntServices.Data;
  72. using <#= DMPublicNames.DataAccessAbstractionsNamespace(this) #>;
  73. namespace <#= DMPublicNames.DataAccessImplEFCFNamespace(this) #>
  74. {
  75. public partial class <#= POCOName(Model) #>Repository :
  76. <#+ if (Model.BaseEntityTypeRef == null) { #>
  77. DbContextDataRepository<<#= Model.DataModel.Name #>DbContext, <#= POCOName(Model) #>, <#= POCOName(Model) #>LoadSettings>,
  78. <#+ } else { #>
  79. DbContextDataRepository<<#= Model.DataModel.Name #>DbContext, <#= POCOName(Model.RootEntityType) #>, <#= POCOName(Model) #>, <#= POCOName(Model) #>LoadSettings>,
  80. <#+ } #>
  81. I<#= POCOName(Model) #>Repository
  82. {
  83. public <#= POCOName(Model) #>Repository(<#= Model.DataModel.Name #>DbContext context)
  84. : this(context, false)
  85. {
  86. }
  87. public <#= POCOName(Model) #>Repository()
  88. : this(new <#= Model.DataModel.Name #>DbContext(), true)
  89. {
  90. }
  91. protected <#= POCOName(Model) #>Repository(<#= Model.DataModel.Name #>DbContext context, bool ownContext)
  92. : base(context, context.<#= Model.RootEntityType.EntitySetName #>, ownContext)
  93. {
  94. }
  95. public override IEnumerable<<#= POCOName(Model) #>> RetrieveAll(out int total, bool retrieveTotal)
  96. {
  97. var query = new <#= POCOName(Model) #>LoadSettings
  98. {
  99. Paging = new PagingSettings { ComputeTotal = retrieveTotal }
  100. };
  101. return Retrieve(query, out total);
  102. }
  103. public override IEnumerable<<#= POCOName(Model) #>> Retrieve(<#= POCOName(Model) #>LoadSettings query, out int total)
  104. {
  105. <#+ if (Model.BaseEntityTypeRef == null) { #>
  106. var dbQuery = DataSet.Apply<#= POCOName(Model) #>LoadSettings(query, out total);
  107. <#+ } else { #>
  108. var dbQuery = DataSet.OfType<<#= POCOName(Model) #>>().Apply<#= POCOName(Model) #>LoadSettings(query, out total);
  109. <#+ } #>
  110. return dbQuery.ToList();
  111. }
  112. public override int Count()
  113. {
  114. return DataSet.Count();
  115. }
  116. public override int Count(<#= POCOName(Model) #>LoadSettings query)
  117. {
  118. <#+ if (Model.BaseEntityTypeRef == null) { #>
  119. var dbQuery = DataSet.Apply<#= Model.Name #>FilterExpression(query.Filter);
  120. <#+ } else { #>
  121. var dbQuery = DataSet.OfType<<#= POCOName(Model) #>>().Apply<#= Model.Name #>FilterExpression(query.Filter);
  122. <#+ } #>
  123. return dbQuery.Count();
  124. }
  125. }
  126. }
  127. <#+ }
  128. }
  129. protected class ManualDataEntityImplEFCFRepositoy : DataModelBaseTemplate<EntityType>
  130. {
  131. public ManualDataEntityImplEFCFRepositoy(EntityType model, XmlMap<string, object> map) : base (model, map) { }
  132. protected override void TransformOverride()
  133. {
  134. #>
  135. using System;
  136. using System.Collections.Generic;
  137. using EntModApp.EntServices;
  138. using EntModApp.EntServices.Data;
  139. using <#= DMPublicNames.DataAccessAbstractionsNamespace(this) #>;
  140. namespace <#= DMPublicNames.DataAccessImplEFCFNamespace(this) #>
  141. {
  142. public partial class <#= Model.Name #>Repository
  143. {
  144. }
  145. }
  146. <#+ }
  147. }
  148. protected class DataModelImplEFCFRepositoyExtensions : DataModelBaseTemplate<EntityType>
  149. {
  150. public DataModelImplEFCFRepositoyExtensions(EntityType model, XmlMap<string, object> map) : base (model, map) { }
  151. protected override void TransformOverride()
  152. {
  153. #>
  154. using System;
  155. using System.Collections.Generic;
  156. using System.Data.Entity;
  157. using System.Linq;
  158. using System.Linq.Expressions;
  159. using EntModApp.EntServices;
  160. using EntModApp.EntServices.Data;
  161. using <#= DMPublicNames.DataAccessAbstractionsNamespace(this) #>;
  162. namespace <#= DMPublicNames.DataAccessImplEFCFNamespace(this) #>
  163. {
  164. public static class <#= POCOName(Model) #>RepositoryExtensions
  165. {
  166. <#+ foreach (var entity in Seq.Build(Model)) { #>
  167. public static IQueryable<<#= POCOName(entity) #>> Apply<#= POCOName(entity) #>LoadSettings(this IQueryable<<#= POCOName(entity) #>> query, <#= POCOName(entity) #>LoadSettings loadSettings, out int total)
  168. {
  169. if (loadSettings == null)
  170. loadSettings = new <#= POCOName(entity) #>LoadSettings();
  171. query = query.Apply<#= entity.Name #>InclusionSettings(loadSettings.Inclusion);
  172. query = query.Apply<#= entity.Name #>FilterExpression(loadSettings.Filter);
  173. query = query.Apply<#= entity.Name #>SortingSettings(loadSettings.Sorting);
  174. query = query.ApplyPagingSettings(loadSettings.Paging, out total);
  175. query = query.Apply<#= entity.Name #>SelectionSettings(loadSettings.Selection);
  176. return query;
  177. }
  178. public static IEnumerable<string> GetDirect<#= entity.Name #>InclusionPaths(this <#= POCOName(entity) #>InclusionSettings inclusionSettings)
  179. {
  180. <#+ if (entity.BaseEntityTypeRef != null) { #>
  181. foreach (var path in inclusionSettings.GetDirect<#= entity.BaseEntityTypeRef.Name #>InclusionPaths())
  182. yield return path;
  183. <#+ } #>
  184. <#+ foreach (var prop in entity.References) { #>
  185. if (inclusionSettings.Include<#= prop.Name #>) yield return "<#= prop.Name #>";
  186. <#+ } #>
  187. yield break;
  188. }
  189. public static IEnumerable<string> Get<#= entity.Name #>InclusionPaths(this <#= POCOName(entity) #>InclusionSettings inclusionSettings)
  190. {
  191. foreach (var path in inclusionSettings.GetDirect<#= entity.Name #>InclusionPaths())
  192. yield return path;
  193. <#+ foreach (var prop in entity.References) { #>
  194. if (inclusionSettings.Include<#= prop.Name #>)
  195. foreach (var referencePath in inclusionSettings.Included<#= prop.Name #>Settings.Inclusion.Get<#= prop.EntityTypeRef.Name #>InclusionPaths())
  196. yield return "<#= prop.Name #>." + referencePath;
  197. <#+ } #>
  198. yield break;
  199. }
  200. public static IQueryable<<#= POCOName(entity) #>> Apply<#= entity.Name #>InclusionSettings(this IQueryable<<#= POCOName(entity) #>> query, <#= POCOName(entity) #>InclusionSettings inclusionSettings)
  201. {
  202. foreach (var path in inclusionSettings.Get<#= entity.Name #>InclusionPaths())
  203. query = query.Include(path);
  204. return query;
  205. }
  206. public static IQueryable<<#= POCOName(entity) #>> Apply<#= entity.Name #>FilterExpression(this IQueryable<<#= POCOName(entity) #>> query, <#= POCOName(entity) #>FilterExpression filterExpression)
  207. {
  208. if (filterExpression.ByKey != null)
  209. query = query.Where(o => <#= Model.RootEntityType.ConformKey().ToStringList(" && ", k => string.Format("o.{0} == filterExpression.ByKey.{0}", k.KeyName())) #>);
  210. var parameter = Expression.Parameter(typeof(<#= POCOName(entity) #>), "e");
  211. <#+ foreach (var prop in Model.AllPlainProperties)
  212. {
  213. var propType = prop.Type.ToCommonString(prop.AllowNull);
  214. #>
  215. if (filterExpression.<#= prop.Name #>Filter != null)
  216. query = query.Where(filterExpression.<#= prop.Name #>Filter.CreateExpressionBody<<#= POCOName(entity) #>, <#= propType #>>(<#= Model.DataModel.Name #>DataAccessConstants.<#= POCOName(entity) #>.<#= prop.Name #>, parameter).ToLambda<<#= POCOName(entity) #>>(parameter));
  217. <#+ } #>
  218. <#+ foreach (var prop in Model.AllReferences.Where(r => !r.IsMultiple))
  219. {
  220. var refKeys = prop.ConformKey();
  221. var entKeys = prop.EntityTypeRef.ConformKey();
  222. var tups = Tup.Create(refKeys, entKeys).Enumerate();
  223. #>
  224. if (filterExpression.<#= prop.Name #>Key != null)
  225. query = query.Where(o => <#= tups.ToStringList(" && ", k => string.Format("o.{0} == filterExpression.{1}Key.{2}", k.Item1.KeyName(), prop.Name, k.Item2.KeyName())) #>);
  226. <#+ } #>
  227. if (filterExpression.Skip.HasValue)
  228. query = query.Skip(filterExpression.Skip.Value);
  229. if (filterExpression.Take.HasValue)
  230. query = query.Take(filterExpression.Take.Value);
  231. return query;
  232. }
  233. public static IQueryable<<#= POCOName(entity) #>> Apply<#= entity.Name #>SortingSettings(this IQueryable<<#= POCOName(entity) #>> query, <#= POCOName(entity) #>SortingSettings sortingSettings)
  234. {
  235. return query;
  236. }
  237. public static IQueryable<<#= POCOName(entity) #>> Apply<#= entity.Name #>SelectionSettings(this IQueryable<<#= POCOName(entity) #>> query, <#= POCOName(entity) #>SelectionSettings selectionSettings)
  238. {
  239. return query;
  240. }
  241. <#+ } #>
  242. }
  243. }
  244. <#+ }
  245. }
  246. protected class QueryableModelImplEFCFRepositoy : DataModelBaseTemplate<DataModel>
  247. {
  248. public QueryableModelImplEFCFRepositoy(DataModel model, XmlMap<string, object> map) : base (model, map) { }
  249. protected override void TransformOverride()
  250. {
  251. #>
  252. using System;
  253. using System.Collections.Generic;
  254. using EntModApp.EntServices;
  255. using EntModApp.EntServices.Data;
  256. using <#= DMPublicNames.DataAccessAbstractionsNamespace(this) #>;
  257. namespace <#= DMPublicNames.DataAccessImplEFCFNamespace(this) #>
  258. {
  259. public class Queryable<#= Model.Name #>Repository :
  260. IQueryable<#= Model.Name #>Repository
  261. {
  262. public Queryable<#= Model.Name #>Repository(<#= Model.DataModel.Name #>DbContext context)
  263. : this(context, false)
  264. {
  265. }
  266. public Queryable<#= Model.Name #>Repository()
  267. : this(new <#= Model.DataModel.Name #>DbContext(), true)
  268. {
  269. }
  270. protected Queryable<#= Model.Name #>Repository(<#= Model.DataModel.Name #>DbContext context, bool ownContext)
  271. {
  272. if (context == null) throw new ArgumentNullException();
  273. Context = context;
  274. OwnContext = ownContext;
  275. }
  276. protected <#= Model.DataModel.Name #>DbContext Context { get; private set; }
  277. protected bool OwnContext { get; private set; }
  278. <#+ foreach (var entity in Model.EntityTypes) { #>
  279. private IQueryable<#= POCOName(entity) #>Repository _<#= entity.EntitySetName #>;
  280. public IQueryable<#= POCOName(entity) #>Repository <#= entity.EntitySetName #>
  281. {
  282. get { return _<#= entity.EntitySetName #> ?? (_<#= entity.EntitySetName #> = new Queryable<#= POCOName(entity) #>Repository(Context)); }
  283. }
  284. <#+ } #>
  285. public void Commit()
  286. {
  287. if (OwnContext)
  288. Context.SaveChanges();
  289. }
  290. public void Dispose()
  291. {
  292. if (OwnContext)
  293. {
  294. Context.Dispose();
  295. OwnContext = false;
  296. }
  297. GC.SuppressFinalize(this);
  298. }
  299. }
  300. }
  301. <#+ }
  302. }
  303. protected class DataModelImplEFCFRepositoy : DataModelBaseTemplate<DataModel>
  304. {
  305. public DataModelImplEFCFRepositoy(DataModel model, XmlMap<string, object> map) : base (model, map) { }
  306. protected override void TransformOverride()
  307. {
  308. #>
  309. using System;
  310. using System.Collections.Generic;
  311. using EntModApp.EntServices;
  312. using EntModApp.EntServices.Data;
  313. using <#= DMPublicNames.DataAccessAbstractionsNamespace(this) #>;
  314. namespace <#= DMPublicNames.DataAccessImplEFCFNamespace(this) #>
  315. {
  316. public class <#= Model.Name #>Repository :
  317. I<#= Model.Name #>Repository
  318. {
  319. public <#= Model.Name #>Repository(<#= Model.DataModel.Name #>DbContext context)
  320. : this(context, false)
  321. {
  322. }
  323. public <#= Model.Name #>Repository()
  324. : this(new <#= Model.DataModel.Name #>DbContext(), true)
  325. {
  326. }
  327. protected <#= Model.Name #>Repository(<#= Model.DataModel.Name #>DbContext context, bool ownContext)
  328. {
  329. if (context == null) throw new ArgumentNullException();
  330. Context = context;
  331. OwnContext = ownContext;
  332. }
  333. protected <#= Model.DataModel.Name #>DbContext Context { get; private set; }
  334. protected bool OwnContext { get; private set; }
  335. <#+ foreach (var entity in Model.EntityTypes/*.Where(e => e.BaseEntityTypeRef == null)*/) { #>
  336. private I<#= POCOName(entity) #>Repository _<#= entity.EntitySetName #>;
  337. public I<#= POCOName(entity) #>Repository <#= entity.EntitySetName #>
  338. {
  339. get { return _<#= entity.EntitySetName #> ?? (_<#= entity.EntitySetName #> = new <#= POCOName(entity) #>Repository(Context)); }
  340. }
  341. <#+ } #>
  342. public void Commit()
  343. {
  344. if (OwnContext)
  345. Context.SaveChanges();
  346. }
  347. public void Dispose()
  348. {
  349. if (OwnContext)
  350. {
  351. Context.Dispose();
  352. OwnContext = false;
  353. }
  354. GC.SuppressFinalize(this);
  355. }
  356. }
  357. }
  358. <#+ }
  359. }
  360. protected class QueryableModelImplEFCFRepositoyFactory : DataModelBaseTemplate<DataModel>
  361. {
  362. public QueryableModelImplEFCFRepositoyFactory(DataModel model, XmlMap<string, object> map) : base (model, map) { }
  363. protected override void TransformOverride()
  364. {
  365. #>
  366. using System;
  367. using System.Collections.Generic;
  368. using EntModApp.EntServices;
  369. using EntModApp.EntServices.Data;
  370. using <#= DMPublicNames.DataAccessAbstractionsNamespace(this) #>;
  371. namespace <#= DMPublicNames.DataAccessImplEFCFNamespace(this) #>
  372. {
  373. public class Queryable<#= Model.Name #>RepositoryFactory :
  374. IQueryable<#= Model.Name #>RepositoryFactory
  375. {
  376. public IQueryable<#= Model.Name #>Repository CreateRepository()
  377. {
  378. return new Queryable<#= Model.Name #>Repository();
  379. }
  380. }
  381. }
  382. <#+ }
  383. }
  384. protected class DataModelImplEFCFRepositoyFactory : DataModelBaseTemplate<DataModel>
  385. {
  386. public DataModelImplEFCFRepositoyFactory(DataModel model, XmlMap<string, object> map) : base (model, map) { }
  387. protected override void TransformOverride()
  388. {
  389. #>
  390. using System;
  391. using System.Collections.Generic;
  392. using EntModApp.EntServices;
  393. using EntModApp.EntServices.Data;
  394. using <#= DMPublicNames.DataAccessAbstractionsNamespace(this) #>;
  395. namespace <#= DMPublicNames.DataAccessImplEFCFNamespace(this) #>
  396. {
  397. public class <#= Model.Name #>RepositoryFactory :
  398. I<#= Model.Name #>RepositoryFactory
  399. {
  400. public I<#= Model.Name #>Repository CreateRepository()
  401. {
  402. return new <#= Model.Name #>Repository();
  403. }
  404. }
  405. }
  406. <#+ }
  407. }
  408. #>