Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

DataSource.twig 6.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. {#- This file can be edited -#}
  2. /**
  3. * This is a generated file. Do not edit, changes will be overwritten.
  4. */
  5. using System;
  6. using System.Collections.Generic;
  7. using System.ComponentModel.DataAnnotations.Schema;
  8. using System.Data;
  9. using Microsoft.EntityFrameworkCore;
  10. using Npgsql.EntityFrameworkCore.PostgreSQL;
  11. using WebApi.DataAccess.Models;
  12. namespace WebApi.DataAccess
  13. {
  14. public partial class DatabaseContext : DbContext
  15. {
  16. private readonly string _connectionString;
  17. public DatabaseContext(string connectionString)
  18. {
  19. _connectionString = connectionString;
  20. }
  21. public DatabaseContext(DbContextOptions options) : base(options)
  22. {
  23. }
  24. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  25. {
  26. if (_connectionString != null) {
  27. optionsBuilder.UseNpgsql(_connectionString);
  28. }
  29. }
  30. protected override void OnModelCreating(ModelBuilder modelBuilder)
  31. {
  32. modelBuilder.HasPostgresExtension("uuid-ossp");
  33. {% for table in dataSource.getTables() %}{% if (table.hasAny()) %}
  34. modelBuilder.Entity<{{ table.getName() | escapeReservedWords }}>().ToTable("{{ table.getName() | escapeString }}");
  35. {% for column in table.getColumns() %}{% if (column.isSelected()) %}
  36. modelBuilder.Entity<{{ table.getName() | escapeReservedWords }}>()
  37. .Property(e => e.{{ column.getName() | escapeReservedWords }})
  38. .HasColumnName("{{ column.getName() | escapeString }}");
  39. {% endif %}{% endfor %}
  40. modelBuilder.Entity<{{ table.getName() | escapeReservedWords }}>()
  41. .HasKey(c => new { {% for column in table.getPrimaryKeys() %}{% if (column.isSelected()) %}c.{{ column.getName() | escapeReservedWords }}{% if not (loop.last) %}, {% endif %}{% endif %}{% endfor %} });
  42. {% for column in table.getColumns() %}{% if (column.isSelected()) and (column.hasDefaultValue()) %}
  43. modelBuilder.Entity<{{ table.getName() | escapeReservedWords }}>()
  44. .Property(e => e.{{ column.getName() | escapeReservedWords }})
  45. .HasDefaultValueSql("{{ column.getDefaultValue() | escapeString }}");
  46. {% endif %}{% endfor %}
  47. {% for fk in table.getSourceForeignKeys() %}{% if (fk.isSelected()) %}
  48. modelBuilder.Entity<{{ fk.getSourceTable().getName() | escapeReservedWords }}>()
  49. .HasOne(e => e.{{ fk.getSourceForeignKeyName() | escapeReservedWords }})
  50. .WithMany(e => e.{{ fk.getTargetForeignKeyName() | escapeReservedWords }})
  51. .HasForeignKey(e => new { {% for column in fk.getSourceColumns() %}e.{{ column.getName | escapeReservedWords | escapeString }}{% if not (loop.last) %}, {% endif %}{% endfor %} })
  52. .HasConstraintName("{{ fk.getName() | escapeString }}");
  53. {% endif %}{% endfor %}
  54. {% endif %}{% endfor %}
  55. }
  56. {% for table in dataSource.getTables() %}{% if (table.hasAny()) %}
  57. public virtual DbSet<{{ table.getName() | escapeReservedWords }}> {{ table.getName() | escapeReservedWords }} { get; set; }
  58. {% endif %}{% endfor %}
  59. {% for sp in dataSource.getStoredProcedures() %}{% if (sp.isSelected()) %}
  60. public static {% if (sp.getType().getLanguageTypeName() == null) %}void{% else %}{{ sp.getType().getLanguageTypeName() }}{% endif %} {{ sp.getName() | escapeReservedWords }}({% for arg in sp.getArguments() %}{{ arg.getType().getLanguageTypeName() }} {{ arg.getName() | escapeReservedWords }}{% if not (loop.last) %}, {% endif %}{% endfor %})
  61. {
  62. throw new NotImplementedException();
  63. }
  64. public {% if (sp.getType().getLanguageTypeName() == null) %}void{% else %}{{ sp.getType().getLanguageTypeName() }}{% endif %} sp_{{ sp.getName() | escapeReservedWords }}({% for arg in sp.getArguments() %}{{ arg.getType().getLanguageTypeName() }} {{ arg.getName() | escapeReservedWords }}{% if not (loop.last) %}, {% endif %}{% endfor %})
  65. {
  66. using (var connection = Database.GetDbConnection()) {
  67. connection.Open();
  68. using (var command = connection.CreateCommand()) {
  69. command.CommandType = CommandType.StoredProcedure;
  70. command.CommandText = "{{ sp.getName() | escapeString }}";
  71. {% for arg in sp.getArguments() %}
  72. var arg_{{ arg.getName() }} = command.CreateParameter();
  73. arg_{{ arg.getName() }}.ParameterName = "{{ arg.getName() | escapeString }}";
  74. arg_{{ arg.getName() }}.Direction = ParameterDirection.Input;
  75. arg_{{ arg.getName() }}.Value = {{ arg.getName() | escapeReservedWords }};
  76. command.Parameters.Add(arg_{{ arg.getName() }});
  77. {% endfor %}
  78. using (var reader = command.ExecuteReader()) {
  79. {% if (sp.getType().isSetOf()) %}
  80. var value = new List<{{ sp.getType().getLanguageBaseTypeName() }}>();
  81. {% else %}
  82. var value = default({{ sp.getType().getLanguageTypeName() }});
  83. {% endif %}
  84. while (reader.Read()) {
  85. {% if ((sp.getType().getLanguageType() != null)) %}
  86. var item = new {{ sp.getType().getLanguageBaseTypeName() }}
  87. {
  88. {% for col in sp.getType().getLanguageType().getColumns() %}{{ col.getName() | escapeReservedWords }} = ({{ col.getType().getLanguageTypeName() }}) reader.GetValue({{ loop.index0 }}){% if not (loop.last) %},{% endif %}
  89. {% endfor %}
  90. };
  91. {% else %}
  92. var item = ({{ sp.getType().getLanguageBaseTypeName() }}) reader.GetValue(0);
  93. {% endif %}
  94. {% if (sp.getType().isSetOf()) %}
  95. value.Add(item);
  96. {% else %}
  97. value = item;
  98. {% endif %}
  99. }
  100. connection.Close();
  101. {% if (sp.getType().getLanguageTypeName() != null) %}
  102. return value;
  103. {% endif %}
  104. }
  105. }
  106. }
  107. }
  108. {% endif %}{% endfor %}
  109. }
  110. }