DbContext.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. using System;
  2. using System.Data.Common;
  3. using System.Data.Entity;
  4. using System.Data.Entity.ModelConfiguration.Configuration;
  5. using System.Data.Entity.ModelConfiguration.Conventions;
  6. using System.Web.UI.WebControls;
  7. using ShwasherSys.Authorization.Roles;
  8. using ShwasherSys.Authorization.Users;
  9. using ShwasherSys.BaseSysInfo;
  10. using IwbZero;
  11. using ShwasherSys.BasicInfo;
  12. using ShwasherSys.BasicInfo.OutFactory;
  13. using ShwasherSys.CompanyInfo;
  14. using ShwasherSys.CustomerInfo;
  15. using ShwasherSys.Inspection;
  16. using ShwasherSys.Invoice;
  17. using ShwasherSys.NotificationInfo;
  18. using ShwasherSys.Order;
  19. using ShwasherSys.OrderSendInfo;
  20. using ShwasherSys.PackageInfo;
  21. using ShwasherSys.ProductionOrderInfo;
  22. using ShwasherSys.ProductInfo;
  23. using ShwasherSys.ProductStoreInfo;
  24. using ShwasherSys.ReturnGoods;
  25. using ShwasherSys.RmStore;
  26. using ShwasherSys.ScrapStore;
  27. using ShwasherSys.SemiProductStoreInfo;
  28. namespace ShwasherSys.EntityFramework
  29. {
  30. public class ShwasherDbContext : IwbDbContext<SysRole, SysUser>
  31. {
  32. //TODO: Define an IDbSet for each Entity...
  33. public IDbSet<SysAppGuid> AppGuids { get; set; }
  34. public IDbSet<SysLog> AuditLogs { get; set; }
  35. public IDbSet<SysFunction> Functions { get; set; }
  36. public IDbSet<SysSetting> Settings { get; set; }
  37. public IDbSet<SysState> SysStates { get; set; }
  38. public IDbSet<SysAttachFile> SysAttachFiles { get; set; }
  39. public IDbSet<BusinessLog> BusinessLogs { get; set; }
  40. #region New
  41. public IDbSet<Employee> EmployeeInfo { get; set; }
  42. public IDbSet<ViewEmployee> ViewEmployeeInfo { get; set; }
  43. public IDbSet<EmployeeWorkPerformance> EmployeeWorkPerformanceInfo { get; set; }
  44. public IDbSet<DisqualifiedProduct> DisqualifiedProductInfo { get; set; }
  45. public IDbSet<CustomerDisabledProduct> CustomerDisabledProductInfo { get; set; }
  46. public IDbSet<ProductionLog> ProductionOrderLogInfo { get; set; }
  47. public IDbSet<LicenseDocument> LicenseDocumentInfo { get; set; }
  48. public IDbSet<LicenseType> LicenseTypeInfo { get; set; }
  49. public IDbSet<FixedAsset> FixedAssetInfo { get; set; }
  50. public IDbSet<Mold> MoldInfo { get; set; }
  51. public IDbSet<DeviceMgPlan> DeviceMgInfo { get; set; }
  52. public IDbSet<MaintenanceRecord> MaintenanceRecordsInfo { get; set; }
  53. public IDbSet<MaintenanceMember> MaintenanceMemberInfo { get; set; }
  54. public IDbSet<QualityIssueLabel> QualityIssueLabelInfo { get; set; }
  55. public IDbSet<ScrapType> ScrapTypeInfo { get; set; }
  56. public IDbSet<FixedAssetType> FixedAssetTypeInfo { get; set; }
  57. public IDbSet<CustomerInvoiceAddress> CustomerInvoiceAddressInfo { get; set; }
  58. public IDbSet<ProductInspectReport> ProductInspectReportInfo { get; set; }
  59. #endregion
  60. #region ShwasherSys
  61. public IDbSet<OrderHeader> OrderHeaders { get; set; }
  62. public IDbSet<OrderItem> OrderItems { get; set; }
  63. public IDbSet<SysHelp> SysHelps { get; set; }
  64. public IDbSet<Department> Department { get; set; }
  65. public IDbSet<Duty> Dutys { get; set; }
  66. public IDbSet<StoreHouse> StoreHouses { get; set; }
  67. public IDbSet<StoreHouseLocation> StoreHouseLocations { get; set; }
  68. public IDbSet<Regions> Regions { get; set; }
  69. public IDbSet<Factories> Factories { get; set; }
  70. public IDbSet<OutFactory> OutFactory { get; set; }
  71. public IDbSet<BulletinInfo> BulletinInfos { get; set; }
  72. public IDbSet<Customer> Customers { get; set; }
  73. public IDbSet<CustomerDefaultProduct> CustomerDefaultProducts { get; set; }
  74. public IDbSet<CustomerSend> CustomerSends { get; set; }
  75. public IDbSet<Product> Products { get; set; }
  76. public IDbSet<Standard> Standards { get; set; }
  77. public IDbSet<ShortMessage> ShortMessages { get; set; }
  78. public IDbSet<ShortMsgDetail> ShortMsgDetails { get; set; }
  79. public IDbSet<ViewOrderItems> ViewOrderItems { get; set; }
  80. public IDbSet<ViewOrderSend> ViewOrderSends { get; set; }
  81. public IDbSet<ViewOrderSendBill> ViewOrderSendBills { get; set; }
  82. public IDbSet<SemiProducts> SemiProducts { get; set; }
  83. public IDbSet<ProductionOrder> ProductionOrders { get; set; }
  84. public IDbSet<BackUpCurrentSemiStoreHouse> BackUpCurrentSemiStoreHouses { get; set; }
  85. public IDbSet<CurrentSemiStoreHouse> CurrentSemiStoreHouses { get; set; }
  86. public IDbSet<SemiEnterStore> SemiEnterStores { get; set; }
  87. public IDbSet<SemiOutStore> SemiOutStores { get; set; }
  88. public IDbSet<SemiProductStore> SemiProductStores { get; set; }
  89. public IDbSet<ProductInspectInfo> ProductInspectInfos { get; set; }
  90. public IDbSet<ProductInspectReportContent> PtoductInspectReports { get; set; }
  91. public IDbSet<TemplateInfo> TemplateInfos { get; set; }
  92. public IDbSet<PackageApply> PackageApply { get; set; }
  93. public IDbSet<FinshedEnterStore> FinshedEnterStores { get; set; }
  94. public IDbSet<ProductOutStore> ProductOutStores { get; set; }
  95. public IDbSet<CurrentProductStoreHouse> CurrentProductStoreHouses { get; set; }
  96. public IDbSet<OrderSend> OrderSends { get; set; }
  97. public IDbSet<OrderSendBill> OrderSendBills { get; set; }
  98. public IDbSet<OrderStickBill> OrderStickBills { get; set; }
  99. public IDbSet<ViewCurrentSemiStoreHouse> ViewCurrentSemiStoreHouses { get; set; }
  100. public IDbSet<ViewSemiEnterStore> ViewSemiEnterStores { get; set; }
  101. public IDbSet<ViewSemiOutStore> ViewSemiOutStores { get; set; }
  102. public IDbSet<ViewCustomerStick> ViewCustomerSticks { get; set; }
  103. public IDbSet<OrderUnit> OrderUnits { get; set; }
  104. public IDbSet<ViewOrderSendStickBill> ViewOrderSendStickBills { get; set; }
  105. public IDbSet<ViewQueryCurrentProductNum> ViewQueryCurrentProductNums { get; set; }
  106. public IDbSet<ViewBookedProductNum> ViewBookedProductNums { get; set; }
  107. public IDbSet<ViewCanProductStore> ViewCanProductStores { get; set; }
  108. public IDbSet<ViewProductEnterStore> ViewProductEnterStores { get; set; }
  109. public IDbSet<ViewProductOutStore> ViewProductOutStores { get; set; }
  110. public IDbSet<ViewCurrentProductStoreHouse> ViewCurrentProductStoreHouses { get; set; }
  111. public IDbSet<ViewEnterOutProductStore> ViewEnterOutProductStores { get; set; }
  112. public IDbSet<ViewEnterOutLogCus> ViewEnterOutLogCus { get; set; }
  113. public IDbSet<ViewCurrentStoreTotal> ViewCurrentStoreTotals { get; set; }
  114. public IDbSet<ViewPackageApply> ViewPackageApply { get; set; }
  115. public IDbSet<Currency> Currency { get; set; }
  116. public IDbSet<CurrencyExchangeRate> CurrencyExchangeRate { get; set; }
  117. public IDbSet<ViewStickBill> ViewStickBill { get; set; }
  118. public IDbSet<OrderSendExceed> OrderSendExceed { get; set; }
  119. public IDbSet<StatementBill> StatementBill { get; set; }
  120. public IDbSet<RmProduct> RmProducts { get; set; }
  121. public IDbSet<RmEnterStore> RmEnterStores { get; set; }
  122. public IDbSet<RmOutStore> RmOutStores { get; set; }
  123. public IDbSet<CurrentRmStoreHouse> CurrentRmStoreHouses { get; set; }
  124. public IDbSet<ViewRmEnterStore> ViewRmEnterStores { get; set; }
  125. public IDbSet<ViewRmOutStore> ViewRmOutStores { get; set; }
  126. public IDbSet<ViewCurrentRmStoreHouse> ViewCurrentRmStoreHouse { get; set; }
  127. public IDbSet<ExpressLogistics> ExpressLogistics { get; set; }
  128. public IDbSet<ExpressProviderMapper> ExpressProviderMapper { get; set; }
  129. public IDbSet<ExpressServiceProvider> ExpressServiceProviders { get; set; }
  130. public IDbSet<InventoryCheckInfo> InventoryCheck { get; set; }
  131. public IDbSet<InventoryCheckRecord> InventoryCheckRecord { get; set; }
  132. public IDbSet<ViewInventoryCheckRecordProduct> ViewInventoryCheckRecordProduct { get; set; }
  133. public IDbSet<ViewInventoryCheckRecordSemi> ViewInventoryCheckRecordSemi { get; set; }
  134. public IDbSet<ViewEnterOutSemiProductStore> ViewEnterOutSemiProductStore { get; set; }
  135. public IDbSet<ViewCurrentSemiStoreTotal> ViewCurrentSemiStoreTotal { get; set; }
  136. public IDbSet<ScrapEnterStore> ScrapEnterStores { get; set; }
  137. public IDbSet<ViewScrapEnterStore> ViewScrapEnterStore { get; set; }
  138. public IDbSet<ReturnGoodOrder> ReturnGoodOrders { get; set; }
  139. public IDbSet<ViewStatementBill> ViewStatementBill { get; set; }
  140. #endregion
  141. #region 产品属性改造
  142. public IDbSet<ProductProperty> ProductProperty { get; set; }
  143. public IDbSet<ProductMapper> ProductMappers { get; set; }
  144. #endregion
  145. #region 订单生产环节
  146. public IDbSet<OrderProduction> OrderProduction { get; set; }
  147. #endregion
  148. #region 不合格处理
  149. public IDbSet<ViewDisqualifiedReturn> ViewDisqualifiedReturns { get; set; }
  150. public IDbSet<ViewDisqualifiedProduction> ViewDisqualifiedProductions { get; set; }
  151. #endregion
  152. #region 2023
  153. public IDbSet<ScheduleOrderSend> ScheduleOrderSend { get; set; }
  154. public IDbSet<ScheduleOrderSendView> ScheduleOrderSendView { get; set; }
  155. public IDbSet<StandardCatalog> StandardCatalog { get; set; }
  156. public IDbSet<StandardDetail> StandardDetail { get; set; }
  157. #endregion
  158. #region 2024
  159. public IDbSet<MoldProductionRecord> MoldProductionRecord { get; set; }
  160. //添加订单审核后锁定库存的记录 预先冻结库存
  161. public IDbSet<OrderBookStore> OrderBookStore { get; set; }
  162. #endregion
  163. #region 2025
  164. public IDbSet<WxUser> WxUser { get; set; }
  165. public IDbSet<OutSourcingMissStore> OutSourcingMissStore { get; set; }
  166. public IDbSet<ViewOutSourcingMiss> ViewOutSourcingMiss { get; set; }
  167. #endregion
  168. //Example:
  169. //public virtual IDbSet<User> Users { get; set; }
  170. /* NOTE:
  171. * Setting "Default" to base class helps us when working migration commands on Package Manager Console.
  172. * But it may cause problems when working Migrate.exe of EF. If you will apply migrations on command line, do not
  173. * pass connection string name to base classes. ABP works either way.
  174. */
  175. public ShwasherDbContext()
  176. : base("Default")
  177. {
  178. }
  179. /* NOTE:
  180. * This constructor is used by ABP to pass connection string defined in IwbYueDataModule.PreInitialize.
  181. * Notice that, actually you will not directly create an instance of IwbYueDbContext since ABP automatically handles it.
  182. */
  183. public ShwasherDbContext(string nameOrConnectionString)
  184. : base(nameOrConnectionString)
  185. {
  186. }
  187. //This constructor is used in tests
  188. public ShwasherDbContext(DbConnection existingConnection)
  189. : base(existingConnection, false)
  190. {
  191. }
  192. public ShwasherDbContext(DbConnection existingConnection, bool contextOwnsConnection)
  193. : base(existingConnection, contextOwnsConnection)
  194. {
  195. }
  196. protected override void OnModelCreating(DbModelBuilder modelBuilder)
  197. {
  198. modelBuilder.Conventions.Add(new DecimalPrecisionAttributeConvention());
  199. base.OnModelCreating(modelBuilder);
  200. //modelBuilder.Conventions.Add(new DecimalPropertyConvention(18,3));
  201. modelBuilder.Entity<OrderItem>().Property(t => t.Id)
  202. .HasColumnName("OrderItemId");
  203. modelBuilder.Entity<OrderItem>().Property(t => t.Quantity)
  204. .HasPrecision(18, 3);
  205. modelBuilder.Entity<OrderHeader>().Property(t => t.Id)
  206. .HasColumnName("OrderNo");
  207. modelBuilder.Entity<SysHelp>().Property(t => t.Id)
  208. .HasColumnName("HelpId");
  209. modelBuilder.Entity<Department>().Property(t => t.Id)
  210. .HasColumnName("DepartmentID");
  211. modelBuilder.Entity<Duty>().Property(t => t.Id)
  212. .HasColumnName("DutyID");
  213. modelBuilder.Entity<StoreHouse>().Property(t => t.Id)
  214. .HasColumnName("StoreHouseID");
  215. modelBuilder.Entity<Factories>().Property(t => t.Id)
  216. .HasColumnName("FactoryID");
  217. modelBuilder.Entity<OutFactory>().Property(t => t.Id)
  218. .HasColumnName("OutFactoryId");
  219. modelBuilder.Entity<Regions>().Property(t => t.Id)
  220. .HasColumnName("RegionID");
  221. modelBuilder.Entity<BulletinInfo>().Property(t => t.Id)
  222. .HasColumnName("BulletinInfoId");
  223. //BulletinInfoId CustomerId
  224. modelBuilder.Entity<Customer>().Property(t => t.Id)
  225. .HasColumnName("CustomerId");
  226. modelBuilder.Entity<CustomerSend>().Property(t => t.Id)
  227. .HasColumnName("CustomerSendId");
  228. modelBuilder.Entity<Product>().Property(t => t.Id).HasColumnName("ProductNo");
  229. modelBuilder.Entity<Standard>().Property(t => t.Id).HasColumnName("StandardId");
  230. modelBuilder.Entity<ShortMessage>().Property(t => t.Id).HasColumnName("MsgID");
  231. modelBuilder.Entity<ShortMsgDetail>().Property(t => t.Id).HasColumnName("DetailID");
  232. modelBuilder.Entity<ViewOrderItems>().Property(t => t.Id).HasColumnName("OrderItemId");
  233. modelBuilder.Entity<SemiProducts>().Property(t => t.Id).HasColumnName("SemiProductNo");
  234. modelBuilder.Entity<OrderSend>().Property(t => t.Id).HasColumnName("OrderSendId");
  235. modelBuilder.Entity<OrderSendBill>().Property(t => t.Id).HasColumnName("OrderSendBillNo");
  236. modelBuilder.Entity<OrderStickBill>().Property(t => t.Id).HasColumnName("OrderStickBillNo");
  237. modelBuilder.Entity<ViewOrderSend>().Property(t => t.Id).HasColumnName("OrderSendId");
  238. modelBuilder.Entity<ViewOrderSendBill>().Property(t => t.Id).HasColumnName("OrderSendBillNo");
  239. modelBuilder.Entity<OrderUnit>().Property(t => t.Id).HasColumnName("OrderUnitId");
  240. modelBuilder.Entity<ViewCustomerStick>().Property(t => t.Id).HasColumnName("OrderSendId");
  241. modelBuilder.Entity<ViewOrderSendStickBill>().Property(t => t.Id).HasColumnName("OrderSendId");
  242. modelBuilder.Entity<ViewQueryCurrentProductNum>().Property(t => t.Id).HasColumnName("ProductNo");
  243. modelBuilder.Entity<ViewBookedProductNum>().Property(t => t.Id).HasColumnName("ProductNo");
  244. modelBuilder.Entity<ViewCanProductStore>().Property(t => t.Id).HasColumnName("ProductNo");
  245. modelBuilder.Entity<ViewCurrentStoreTotal>().Property(t => t.Id).HasColumnName("ProductNo");
  246. modelBuilder.Entity<ViewStickBill>().Property(t => t.Id).HasColumnName("OrderStickBillNo");
  247. modelBuilder.Entity<ReturnGoodOrder>().Property(t => t.Quantity)
  248. .HasPrecision(18, 3);
  249. }
  250. }
  251. /// <summary>
  252. /// 用于modelBuilder全局设置自定义精度属性
  253. /// </summary>
  254. public class DecimalPrecisionAttributeConvention
  255. : PrimitivePropertyAttributeConfigurationConvention<DecimalPrecisionAttribute>
  256. {
  257. public override void Apply(ConventionPrimitivePropertyConfiguration configuration,
  258. DecimalPrecisionAttribute attribute)
  259. {
  260. if (attribute.Precision < 1 || attribute.Precision > 38)
  261. {
  262. throw new InvalidOperationException("Precision must be between 1 and 38.");
  263. }
  264. if (attribute.Scale > attribute.Precision)
  265. {
  266. throw new InvalidOperationException("Scale must be between 0 and the Precision value.");
  267. }
  268. configuration.HasPrecision(attribute.Precision, attribute.Scale);
  269. }
  270. }
  271. }