PageRenderTime 53ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/Plugins/GizmoBeach.Components/DataObjects/LinqToSqlOrmFramework.cs

http://github.com/kahanu/CondorXE
C# | 528 lines | 500 code | 27 blank | 1 comment | 7 complexity | 3c9f6b64eff0e8c2824e6b584640b659 MD5 | raw file
  1. using System;
  2. using System.Linq;
  3. using Condor.Core;
  4. using Condor.Core.Interfaces;
  5. using MyMeta;
  6. namespace GizmoBeach.Components.DataObjects
  7. {
  8. public class LinqToSqlOrmFramework : RenderBase, IORMFramework
  9. {
  10. #region ctors
  11. private readonly RequestContext _context;
  12. private readonly ProgressDialogWrapper _dialog;
  13. private readonly IDatabase _database;
  14. private readonly IDataStore _dataStore;
  15. public LinqToSqlOrmFramework(IDataStore dataStore, RequestContext context):base(context.Zeus.Output)
  16. {
  17. this._dataStore = dataStore;
  18. this._context = context;
  19. this._database = context.Database;
  20. this._dialog = context.Dialog;
  21. }
  22. #endregion
  23. #region IORMFramework Members
  24. public string Name
  25. {
  26. get { return "Linq-To-Sql Framework"; }
  27. }
  28. public void Generate()
  29. {
  30. _dialog.InitDialog();
  31. _context.FileList.Add("");
  32. _context.FileList.Add("Generated Linq-To-Sql Interfaces:");
  33. RenderCRUDInterface();
  34. foreach (string tableName in _script.Tables)
  35. {
  36. ITable table = _database.Tables[tableName];
  37. RenderInterface(table);
  38. _dialog.Display("Processing I" + table.Name + _script.Settings.DataOptions.ClassSuffix.Name + ".cs");
  39. }
  40. _dialog.InitDialog();
  41. _context.FileList.Add("");
  42. _context.FileList.Add("Generated Linq-To-Sql Mappers:");
  43. foreach (string tableName in _script.Tables)
  44. {
  45. ITable table = _database.Tables[tableName];
  46. RenderMapper(table);
  47. _dialog.Display("Processing " + table.Name + "Mapper.cs");
  48. }
  49. _dialog.InitDialog();
  50. _context.FileList.Add("");
  51. _context.FileList.Add("Generated Linq-To-Sql Base classes:");
  52. foreach (string tableName in _script.Tables)
  53. {
  54. ITable table = _database.Tables[tableName];
  55. RenderBaseClass(table);
  56. _dialog.Display("Processing " + table.Name + "Base" + _script.Settings.DataOptions.ClassSuffix.Name + ".cs");
  57. }
  58. _dialog.InitDialog();
  59. _context.FileList.Add("");
  60. _context.FileList.Add("Generated Linq-To-Sql Concrete classes:");
  61. foreach (string tableName in _script.Tables)
  62. {
  63. ITable table = _database.Tables[tableName];
  64. RenderConcreteClass(table);
  65. _dialog.Display("Processing " + _script.Settings.DataOptions.DataStore.Selected + table.Name + _script.Settings.DataOptions.ClassSuffix.Name + ".cs");
  66. }
  67. _dialog.InitDialog(1);
  68. _dialog.Display("Processing Linq-To-Sql Helper classes");
  69. _context.FileList.Add("");
  70. _context.FileList.Add("Generated Linq-To-Sql Helper Classes:");
  71. RenderDataContextFactory();
  72. RenderVersionConverter();
  73. }
  74. private void RenderVersionConverter()
  75. {
  76. _hdrUtil.WriteClassHeader(_output);
  77. _output.autoTabLn("using System;");
  78. _output.autoTabLn("using System.Data.Linq;");
  79. _output.autoTabLn("");
  80. _output.autoTabLn("namespace " + StringFormatter.ConvertPathToNamespace(_script.Settings.Namespace + ".DataObjects") + "." + _script.Settings.DataOptions.ORMFramework.Selected);
  81. _output.autoTabLn("{");
  82. _output.tabLevel++;
  83. _output.autoTabLn("public static class VersionConverter");
  84. _output.autoTabLn("{");
  85. _output.tabLevel++;
  86. _output.autoTabLn("/// <summary>");
  87. _output.autoTabLn("/// Converts binary value to string.");
  88. _output.autoTabLn("/// </summary>");
  89. _output.autoTabLn("/// <param name=\"version\">Binary version number.</param>");
  90. _output.autoTabLn("/// <returns>Base64 version number.</returns>");
  91. _output.autoTabLn("public static string ToString(Binary version)");
  92. _output.autoTabLn("{");
  93. _output.tabLevel++;
  94. _output.autoTabLn("if (version == null)");
  95. _output.tabLevel++;
  96. _output.autoTabLn("return null;");
  97. _output.tabLevel--;
  98. _output.autoTabLn("");
  99. _output.autoTabLn("return Convert.ToBase64String(version.ToArray());");
  100. _output.tabLevel--;
  101. _output.autoTabLn("}");
  102. _output.autoTabLn("");
  103. _output.autoTabLn("/// <summary>");
  104. _output.autoTabLn("/// Converts string to binary value.");
  105. _output.autoTabLn("/// </summary>");
  106. _output.autoTabLn("/// <param name=\"version\">Base64 version number.</param>");
  107. _output.autoTabLn("/// <returns>Binary version number.</returns>");
  108. _output.autoTabLn("public static Binary ToBinary(string version)");
  109. _output.autoTabLn("{");
  110. _output.tabLevel++;
  111. _output.autoTabLn("if (string.IsNullOrEmpty(version))");
  112. _output.tabLevel++;
  113. _output.autoTabLn("return null;");
  114. _output.tabLevel--;
  115. _output.autoTabLn("");
  116. _output.autoTabLn("return new Binary(Convert.FromBase64String(version));");
  117. _output.tabLevel--;
  118. _output.autoTabLn("}");
  119. _output.tabLevel--;
  120. _output.autoTabLn("}");
  121. _output.tabLevel--;
  122. _output.autoTabLn("}");
  123. _context.FileList.Add(" VersionConverter.cs");
  124. SaveOutput(CreateFullPath(_script.Settings.DataOptions.DataObjectsNamespace + "\\" + _script.Settings.DataOptions.ORMFramework.Selected, "VersionConverter.cs"), SaveActions.Overwrite);
  125. }
  126. private void RenderDataContextFactory()
  127. {
  128. _hdrUtil.WriteClassHeader(_output);
  129. _output.autoTabLn("using System.Configuration;");
  130. _output.autoTabLn("using System.Data.Linq;");
  131. _output.autoTabLn("using System.Data.Linq.Mapping;");
  132. _output.autoTabLn("");
  133. _output.autoTabLn("namespace " + StringFormatter.ConvertPathToNamespace(_script.Settings.Namespace + ".DataObjects") + "." + _script.Settings.DataOptions.ORMFramework.Selected);
  134. _output.autoTabLn("{");
  135. _output.tabLevel++;
  136. _output.autoTabLn("public static class DataContextFactory");
  137. _output.autoTabLn("{");
  138. _output.tabLevel++;
  139. _output.autoTabLn("private static readonly string _connectionString;");
  140. _output.autoTabLn("private static readonly MappingSource _mappingSource;");
  141. _output.autoTabLn("");
  142. _output.autoTabLn("/// <summary>");
  143. _output.autoTabLn("/// Static constructor.");
  144. _output.autoTabLn("/// </summary>");
  145. _output.autoTabLn("/// <remarks>");
  146. _output.autoTabLn("/// Static initialization of connectionstring and mappingSource.");
  147. _output.autoTabLn("/// This significantly increases performance, primarily due to mappingSource cache.");
  148. _output.autoTabLn("/// </remarks> ");
  149. _output.autoTabLn("static DataContextFactory()");
  150. _output.autoTabLn("{");
  151. _output.tabLevel++;
  152. _output.autoTabLn("string connectionStringName = ConfigurationManager.AppSettings.Get(\"ConnectionStringName\");");
  153. _output.autoTabLn("_connectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;");
  154. _output.tabLevel--;
  155. _output.autoTabLn("");
  156. _output.tabLevel++;
  157. _output.autoTabLn("DataContext context = new " + _script.Settings.DataOptions.DataContext.Name + "(_connectionString);");
  158. _output.autoTabLn("_mappingSource = context.Mapping.MappingSource;");
  159. _output.tabLevel--;
  160. _output.autoTabLn("}");
  161. _output.autoTabLn("");
  162. _output.autoTabLn("/// <summary>");
  163. _output.autoTabLn("/// Rapidly creates a new DataContext using cached connectionstring and mapping source.");
  164. _output.autoTabLn("/// </summary>");
  165. _output.autoTabLn("/// <returns></returns>");
  166. _output.autoTabLn("public static " + _script.Settings.DataOptions.DataContext.Name + " CreateContext()");
  167. _output.autoTabLn("{");
  168. _output.tabLevel++;
  169. _output.autoTabLn("return new " + _script.Settings.DataOptions.DataContext.Name + "(_connectionString, _mappingSource);");
  170. _output.tabLevel--;
  171. _output.autoTabLn("}");
  172. _output.tabLevel--;
  173. _output.autoTabLn("}");
  174. _output.tabLevel--;
  175. _output.autoTabLn("}");
  176. _context.FileList.Add(" DataContextFactory.cs");
  177. SaveOutput(CreateFullPath(_script.Settings.DataOptions.DataObjectsNamespace + "\\" + _script.Settings.DataOptions.ORMFramework.Selected, "DataContextFactory.cs"), SaveActions.Overwrite);
  178. }
  179. private void RenderConcreteClass(ITable table)
  180. {
  181. _hdrUtil.WriteClassHeader(_output);
  182. _output.autoTabLn("using System;");
  183. _output.autoTabLn("using System.Collections.Generic;");
  184. _output.autoTabLn("using System.Linq;");
  185. _output.autoTabLn("using System.Text;");
  186. _output.autoTabLn("using System.Data.Linq;");
  187. _output.autoTabLn("");
  188. _output.autoTabLn("using " + _script.Settings.BusinessObjects.BusinessObjectsNamespace + ";");
  189. _output.autoTabLn("using " + _script.Settings.DataOptions.DataObjectsNamespace + ".Interfaces;");
  190. _output.autoTabLn("using " + _script.Settings.DataOptions.DataObjectsNamespace + "." + _script.Settings.DataOptions.ORMFramework.Selected + ";");
  191. _output.autoTabLn("");
  192. _output.autoTabLn("namespace " + _script.Settings.DataOptions.DataObjectsNamespace + "." + _script.Settings.DataOptions.DataStore.Selected);
  193. _output.autoTabLn("{");
  194. _output.tabLevel++;
  195. _output.autoTabLn("public class " + _script.Settings.DataOptions.DataStore.Selected + StringFormatter.CleanUpClassName(table.Name) + _script.Settings.DataOptions.ClassSuffix.Name + " : " + StringFormatter.CleanUpClassName(table.Name) + "Base" + _script.Settings.DataOptions.ClassSuffix.Name + ", I" + StringFormatter.CleanUpClassName(table.Name) + _script.Settings.DataOptions.ClassSuffix.Name);
  196. _output.autoTabLn("{");
  197. _output.tabLevel--;
  198. _dataStore.GetById(table);
  199. _dataStore.GetAllWithSortingAndPaging(table);
  200. BuildListSort(table);
  201. _output.tabLevel++;
  202. _output.autoTabLn("}");
  203. _output.tabLevel--;
  204. _output.autoTabLn("}");
  205. _context.FileList.Add(" " + _script.Settings.DataOptions.DataStore.Selected + StringFormatter.CleanUpClassName(table.Name) + _script.Settings.DataOptions.ClassSuffix.Name + ".cs");
  206. SaveOutput(CreateFullPath(_script.Settings.DataOptions.DataObjectsNamespace + "\\" + _script.Settings.DataOptions.DataStore.Selected, _script.Settings.DataOptions.DataStore.Selected + StringFormatter.CleanUpClassName(table.Name) + _script.Settings.DataOptions.ClassSuffix.Name + ".cs"), SaveActions.DontOverwrite);
  207. }
  208. private void BuildListSort(ITable table)
  209. {
  210. string tableName = table.Name;
  211. //string model = _script.Settings.BusinessObjects.BusinessObjectsNamespace + "." + StringFormatter.CleanUpClassName(tableName);
  212. string entity = _script.Settings.DataOptions.DataObjectsNamespace + "." + _script.Settings.DataOptions.ORMFramework.Selected + "." + StringFormatter.CleanUpClassName(tableName);
  213. _output.tabLevel++;
  214. _output.tabLevel++;
  215. _output.autoTabLn("private IQueryable<" + entity + "> GetListSort(IQueryable<" + entity + "> query, string sortExpression)");
  216. _output.autoTabLn("{");
  217. _output.tabLevel++;
  218. _output.autoTabLn("bool sortDescending = false;");
  219. _output.autoTabLn("string sortType = string.Empty;");
  220. _output.autoTabLn("if (!string.IsNullOrEmpty(sortExpression))");
  221. _output.autoTabLn("{");
  222. _output.tabLevel++;
  223. _output.autoTabLn("string[] values = sortExpression.Split(' ');");
  224. _output.autoTabLn("sortType = values[0];");
  225. _output.autoTabLn("if (values.Length > 1)");
  226. _output.autoTabLn("{");
  227. _output.tabLevel++;
  228. _output.autoTabLn("sortDescending = values[1] == \"DESC\";");
  229. _output.tabLevel--;
  230. _output.autoTabLn("}");
  231. _output.tabLevel--;
  232. _output.autoTabLn("}");
  233. _output.autoTabLn("");
  234. _output.autoTabLn("switch (sortType)");
  235. _output.autoTabLn("{");
  236. _output.tabLevel++;
  237. bool dateExists = false;
  238. string dateColumnName = string.Empty;
  239. foreach (IColumn dc in table.Columns)
  240. {
  241. if (dc.LanguageType == "DateTime")
  242. {
  243. dateExists = true;
  244. dateColumnName = dc.Name;
  245. break;
  246. }
  247. }
  248. foreach (IColumn c in table.Columns)
  249. {
  250. if (c.Name.ToLower() != _script.Settings.DataOptions.VersionColumnName.ToLower())
  251. {
  252. _output.autoTabLn("case \"" + c.Name + "\":");
  253. _output.tabLevel++;
  254. _output.autoTabLn("if (sortDescending)");
  255. _output.tabLevel++;
  256. _output.autoTab("query = query.OrderByDescending(o => o." + c.Name + ")");
  257. if (dateExists)
  258. {
  259. _output.writeln(".ThenBy(o => o." + dateColumnName + ");");
  260. }
  261. else
  262. {
  263. _output.writeln(";");
  264. }
  265. _output.tabLevel--;
  266. _output.autoTabLn("else");
  267. _output.tabLevel++;
  268. _output.autoTab("query = query.OrderBy(o => o." + c.Name + ")");
  269. if (dateExists)
  270. {
  271. _output.writeln(".ThenBy(o => o." + dateColumnName + ");");
  272. }
  273. else
  274. {
  275. _output.writeln(";");
  276. }
  277. _output.tabLevel--;
  278. _output.autoTabLn("break;");
  279. _output.tabLevel--;
  280. }
  281. }
  282. _output.autoTabLn("default:");
  283. _output.tabLevel++;
  284. if (dateExists)
  285. {
  286. _output.autoTabLn("query = query.OrderByDescending(o => o." + dateColumnName + ");");
  287. }
  288. _output.autoTabLn("break;");
  289. _output.tabLevel--;
  290. _output.tabLevel--;
  291. _output.autoTabLn("}");
  292. _output.autoTabLn("");
  293. _output.tabLevel--;
  294. _output.autoTabLn("return query;");
  295. _output.autoTabLn("}");
  296. _output.tabLevel--;
  297. _output.tabLevel--;
  298. }
  299. private void RenderBaseClass(ITable table)
  300. {
  301. _hdrUtil.WriteClassHeader(_output);
  302. _output.autoTabLn("using System;");
  303. _output.autoTabLn("using System.Collections.Generic;");
  304. _output.autoTabLn("using System.Linq;");
  305. _output.autoTabLn("using System.Text;");
  306. _output.autoTabLn("using System.Data.Linq;");
  307. _output.autoTabLn("");
  308. _output.autoTabLn("using " + _script.Settings.BusinessObjects.BusinessObjectsNamespace + ";");
  309. _output.autoTabLn("using " + _script.Settings.DataOptions.DataObjectsNamespace + ".Interfaces;");
  310. _output.autoTabLn("using " + _script.Settings.DataOptions.DataObjectsNamespace + "." + _script.Settings.DataOptions.ORMFramework.Selected + ";");
  311. _output.autoTabLn("");
  312. _output.autoTabLn("namespace " + _script.Settings.DataOptions.DataObjectsNamespace + "." + _script.Settings.DataOptions.DataStore.Selected);
  313. _output.autoTabLn("{");
  314. _output.tabLevel++;
  315. _output.autoTabLn("public class " + StringFormatter.CleanUpClassName(table.Name) + "Base" + _script.Settings.DataOptions.ClassSuffix.Name + " : ICRUD" + _script.Settings.DataOptions.ClassSuffix.Name + "<" + _context.Utility.BuildModelClassWithNameSpace(StringFormatter.CleanUpClassName(table.Name)) + ">");
  316. _output.autoTabLn("{");
  317. _output.tabLevel++;
  318. _output.autoTabLn("#region CRUD Methods");
  319. _output.autoTabLn("");
  320. _output.tabLevel--;
  321. _dataStore.GetAll(table);
  322. _dataStore.Insert(table);
  323. _dataStore.Update(table);
  324. _dataStore.Delete(table);
  325. _output.autoTabLn("");
  326. _output.tabLevel++;
  327. _output.autoTabLn("#endregion");
  328. _output.tabLevel--;
  329. _output.autoTabLn("}");
  330. _output.tabLevel--;
  331. _output.autoTabLn("}");
  332. _context.FileList.Add(" " + StringFormatter.CleanUpClassName(table.Name) + "Base" + _script.Settings.DataOptions.ClassSuffix.Name + ".cs");
  333. SaveOutput(CreateFullPath(_script.Settings.DataOptions.DataObjectsNamespace + "\\" + _script.Settings.DataOptions.DataStore.Selected + "\\Generated", StringFormatter.CleanUpClassName(table.Name) + "Base" + _script.Settings.DataOptions.ClassSuffix.Name + ".cs"), SaveActions.Overwrite);
  334. }
  335. private void RenderMapper(ITable table)
  336. {
  337. string str = "";
  338. // To BusinessObject loop
  339. foreach (Column c in table.Columns)
  340. {
  341. if (c.Name.ToLower() != _script.Settings.DataOptions.VersionColumnName.ToLower())
  342. {
  343. if (c.IsNullable && (c.LanguageType != "string"))
  344. {
  345. str += " " + _context.Utility.CleanUpProperty(c.Name, false) + " = " + "entity." + _context.Utility.CleanUpProperty(c.Name, false) + ".HasValue ? (" + c.LanguageType + ")entity." + _context.Utility.CleanUpProperty(c.Name, false) + " : default(" + c.LanguageType + ")," + Environment.NewLine;
  346. }
  347. else
  348. {
  349. str += " " + _context.Utility.CleanUpProperty(c.Name, false) + " = " + "entity." + _context.Utility.CleanUpProperty(c.Name, false) + "," + Environment.NewLine;
  350. }
  351. }
  352. else
  353. {
  354. str += " " + _context.Utility.CleanUpProperty(c.Name, false) + " = " + "VersionConverter.ToString(entity." + _context.Utility.CleanUpProperty(c.Name, false) + ")," + Environment.NewLine;
  355. }
  356. }
  357. int lastComma = str.LastIndexOf(",");
  358. str = str.Substring(0, lastComma);
  359. string strEntity = string.Empty;
  360. // ToEntity loop
  361. foreach (Column c in table.Columns)
  362. {
  363. if (c.Name.ToLower() != _script.Settings.DataOptions.VersionColumnName.ToLower())
  364. {
  365. strEntity += " " + _context.Utility.CleanUpProperty(c.Name, false) + " = model." + _context.Utility.CleanUpProperty(c.Name, false) + "," + Environment.NewLine;
  366. }
  367. else if (!c.IsInPrimaryKey && c.IsInForeignKey)
  368. {
  369. }
  370. else
  371. {
  372. strEntity += " " + _context.Utility.CleanUpProperty(c.Name, false) + " = VersionConverter.ToBinary(model." + _context.Utility.CleanUpProperty(c.Name, false) + ")," + Environment.NewLine;
  373. }
  374. }
  375. lastComma = strEntity.LastIndexOf(",");
  376. strEntity = strEntity.Substring(0, lastComma);
  377. _hdrUtil.WriteClassHeader(_output);
  378. _output.autoTabLn("using System;");
  379. _output.autoTabLn("using " + _script.Settings.BusinessObjects.BusinessObjectsNamespace + ";");
  380. _output.autoTabLn("using " + _script.Settings.DataOptions.DataObjectsNamespace + "." + _script.Settings.DataOptions.ORMFramework.Selected + ";");
  381. _output.autoTabLn("");
  382. _output.autoTabLn("namespace " + _script.Settings.DataOptions.DataObjectsNamespace);
  383. _output.autoTabLn("{");
  384. _output.tabLevel++;
  385. _output.autoTabLn("public class " + StringFormatter.CleanUpClassName(table.Name) + "Mapper");
  386. _output.autoTabLn("{");
  387. _output.tabLevel++;
  388. _output.autoTabLn("public static " + _context.Utility.BuildModelClassWithNameSpace(StringFormatter.CleanUpClassName(table.Name)) + " ToBusinessObject(" + _context.Utility.BuildEntityClassWithNameSpace(StringFormatter.CleanUpClassName(table.Name)) + " entity)");
  389. _output.autoTabLn("{");
  390. _output.tabLevel++;
  391. _output.autoTabLn("return new " + _context.Utility.BuildModelClassWithNameSpace(StringFormatter.CleanUpClassName(table.Name)));
  392. _output.autoTabLn("{");
  393. _output.tabLevel--;
  394. _output.autoTabLn(str);
  395. _output.tabLevel++;
  396. _output.autoTabLn("};");
  397. _output.tabLevel--;
  398. _output.autoTabLn("}");
  399. _output.autoTabLn("");
  400. _output.autoTabLn("public static " + _context.Utility.BuildEntityClassWithNameSpace(StringFormatter.CleanUpClassName(table.Name)) + " ToEntity(" + _context.Utility.BuildModelClassWithNameSpace(StringFormatter.CleanUpClassName(table.Name)) + " model)");
  401. _output.autoTabLn("{");
  402. _output.tabLevel++;
  403. _output.autoTabLn("return new " + _context.Utility.BuildEntityClassWithNameSpace(StringFormatter.CleanUpClassName(table.Name)));
  404. _output.autoTabLn("{");
  405. _output.tabLevel--;
  406. _output.autoTabLn(strEntity);
  407. _output.tabLevel++;
  408. _output.autoTabLn("};");
  409. _output.tabLevel--;
  410. _output.autoTabLn("}");
  411. _output.tabLevel--;
  412. _output.autoTabLn("}");
  413. _output.tabLevel--;
  414. _output.autoTabLn("}");
  415. _context.FileList.Add(" " + StringFormatter.CleanUpClassName(table.Name) + "Mapper.cs");
  416. SaveOutput(CreateFullPath(_script.Settings.DataOptions.DataObjectsNamespace + "\\EntityMapper", StringFormatter.CleanUpClassName(table.Name) + "Mapper.cs"), SaveActions.Overwrite);
  417. }
  418. private void RenderInterface(ITable table)
  419. {
  420. _hdrUtil.WriteClassHeader(_output);
  421. _output.autoTabLn("using System;");
  422. _output.autoTabLn("using System.Linq;");
  423. _output.autoTabLn("using System.Collections.Generic;");
  424. _output.autoTabLn("");
  425. _output.autoTabLn("using " + _script.Settings.BusinessObjects.BusinessObjectsNamespace);
  426. _output.autoTabLn("");
  427. _output.autoTabLn("namespace " + _script.Settings.DataOptions.DataObjectsNamespace + ".Interfaces");
  428. _output.autoTabLn("{");
  429. _output.tabLevel++;
  430. _output.autoTabLn("public interface I" + StringFormatter.CleanUpClassName(table.Name) + _script.Settings.DataOptions.ClassSuffix.Name + " : ICRUD" + _script.Settings.DataOptions.ClassSuffix.Name + "<" + StringFormatter.CleanUpClassName(table.Name) + ">");
  431. _output.autoTabLn("{");
  432. _output.tabLevel--;
  433. _dataStore.Interface(table);
  434. _output.tabLevel++;
  435. _output.autoTabLn("}");
  436. _output.tabLevel--;
  437. _output.autoTabLn("}");
  438. _context.FileList.Add(" " + "I" + StringFormatter.CleanUpClassName(table.Name) + _script.Settings.DataOptions.ClassSuffix.Name + ".cs");
  439. SaveOutput(CreateFullPath(_script.Settings.DataOptions.DataObjectsNamespace + "\\Interfaces", "I" + StringFormatter.CleanUpClassName(table.Name) + _script.Settings.DataOptions.ClassSuffix.Name + ".cs"), SaveActions.DontOverwrite);
  440. }
  441. private void RenderCRUDInterface()
  442. {
  443. _hdrUtil.WriteClassHeader(_output);
  444. _output.autoTabLn("using System;");
  445. _output.autoTabLn("using System.Linq;");
  446. _output.autoTabLn("using System.Collections.Generic;");
  447. _output.autoTabLn("");
  448. _output.autoTabLn("namespace " + _script.Settings.DataOptions.DataObjectsNamespace + ".Interfaces");
  449. _output.autoTabLn("{");
  450. _output.tabLevel++;
  451. _output.autoTabLn("public interface ICRUD" + _script.Settings.DataOptions.ClassSuffix.Name + "<T>");
  452. _output.autoTabLn("{");
  453. _output.tabLevel++;
  454. _output.autoTabLn("#region CRUD Methods");
  455. _output.autoTabLn("");
  456. _output.autoTabLn("List<T> GetAll();");
  457. _output.autoTabLn("void Insert(T model);");
  458. _output.autoTabLn("void Delete(T model);");
  459. _output.autoTabLn("void Update(T model);");
  460. _output.autoTabLn("");
  461. _output.autoTabLn("#endregion");
  462. _output.autoTabLn("");
  463. _output.tabLevel--;
  464. _output.autoTabLn("}");
  465. _output.tabLevel--;
  466. _output.autoTabLn("}");
  467. _context.FileList.Add(" ICRUD" + _script.Settings.DataOptions.ClassSuffix.Name + ".cs");
  468. SaveOutput(CreateFullPath(_script.Settings.DataOptions.DataObjectsNamespace + "\\Interfaces", "ICRUD" + _script.Settings.DataOptions.ClassSuffix.Name + ".cs"), SaveActions.Overwrite);
  469. }
  470. #endregion
  471. }
  472. }