├── LCLDemo ├── LCL.Services │ ├── ReadMe.txt │ ├── Plugins │ │ └── index.htm │ ├── Connected Services │ │ └── index.htm │ ├── Global.asax │ ├── OrderService.svc │ ├── UserService.svc │ ├── ProductService.svc │ ├── Infrastructure │ │ └── DependencyRegistrar.cs │ ├── index.html │ ├── Properties │ │ └── PublishProfiles │ │ │ └── CustomProfile.pubxml │ └── Global.asax.cs ├── LCL.WebAPI │ ├── App_Data │ │ ├── index.htm │ │ ├── LCLTestDB.sdf │ │ ├── Restful API 接口规范.doc │ │ ├── demo_data │ │ │ ├── favicon.ico │ │ │ ├── eftestcontext.sql │ │ │ └── Products │ │ │ │ ├── ProductImage.png │ │ │ │ ├── 29ebfc59_e14a_49bc_9a41_d0796f392475.jpg │ │ │ │ ├── 2d3df03f_0663_4f9a_8f6c_cb0af683cd23.jpg │ │ │ │ ├── 333c0de9_cae2_4458_a675_3560e8525ae5.jpg │ │ │ │ ├── 43dd3fe6_4203_41dd_b570_2c9eacb7c021.jpg │ │ │ │ ├── 774f83b1_e90d_4ff1_a148_f90af591a865.jpg │ │ │ │ ├── 82d1556f_1238_43ce_a5fd_410cc246162e.jpg │ │ │ │ ├── a1c1738a_eaba_4c4c_b683_7c5b4eb64306.jpg │ │ │ │ ├── b182e978_85e1_474d_84e3_e505441e9000.jpg │ │ │ │ ├── bc0d0d76_3d79_472e_86bb_63a9376d2bab.jpg │ │ │ │ ├── bc2dbf1a_699a_4eaf_a49f_4eccc199bb55.jpg │ │ │ │ ├── c9285a49_972c_4356_a893_3e2a4e45c17d.jpg │ │ │ │ ├── d5d4367d_ab87_4687_8d7c_d1544acf50d1.jpg │ │ │ │ ├── d633a09b_479f_4af2_af9d_635b7a59e1b7.jpg │ │ │ │ ├── dafeaaed_0b93_45ea_8b04_00dd86c62d5e.jpg │ │ │ │ └── dd34e809_b1fc_4c75_b8f9_c5444a64cb47.jpg │ │ ├── InstalledPlugins.txt │ │ └── Localization │ │ │ └── installation.en.xml │ ├── Models │ │ └── index.htm │ ├── Plugins │ │ └── index.htm │ ├── Controllers │ │ ├── v2 │ │ │ └── index.htm │ │ └── HomeController.cs │ ├── Views │ │ ├── _ViewStart.cshtml │ │ └── Home │ │ │ ├── About.cshtml │ │ │ └── Contact.cshtml │ ├── key.snk │ ├── Content │ │ ├── myStyle.css │ │ └── Site.css │ ├── Global.asax │ ├── App_Start │ │ ├── SwaggerConfig.cs │ │ └── FilterConfig.cs │ ├── Infrastructure │ │ └── DependencyRegistrar.cs │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ └── glyphicons-halflings-regular.woff │ ├── Log │ │ └── Info20170731.log │ ├── Utility │ │ └── ApplySchemaVendorFilter.cs │ ├── ReadMe.txt │ └── Properties │ │ └── PublishProfiles │ │ └── CustomProfile.pubxml ├── LCL.WebMvc │ ├── App_Data │ │ ├── index.htm │ │ ├── LCLTestDB.sdf │ │ ├── demo_data │ │ │ ├── favicon.ico │ │ │ ├── eftestcontext.sql │ │ │ └── Products │ │ │ │ ├── ProductImage.png │ │ │ │ ├── 29ebfc59_e14a_49bc_9a41_d0796f392475.jpg │ │ │ │ ├── 2d3df03f_0663_4f9a_8f6c_cb0af683cd23.jpg │ │ │ │ ├── 333c0de9_cae2_4458_a675_3560e8525ae5.jpg │ │ │ │ ├── 43dd3fe6_4203_41dd_b570_2c9eacb7c021.jpg │ │ │ │ ├── 774f83b1_e90d_4ff1_a148_f90af591a865.jpg │ │ │ │ ├── 82d1556f_1238_43ce_a5fd_410cc246162e.jpg │ │ │ │ ├── a1c1738a_eaba_4c4c_b683_7c5b4eb64306.jpg │ │ │ │ ├── b182e978_85e1_474d_84e3_e505441e9000.jpg │ │ │ │ ├── bc0d0d76_3d79_472e_86bb_63a9376d2bab.jpg │ │ │ │ ├── bc2dbf1a_699a_4eaf_a49f_4eccc199bb55.jpg │ │ │ │ ├── c9285a49_972c_4356_a893_3e2a4e45c17d.jpg │ │ │ │ ├── d5d4367d_ab87_4687_8d7c_d1544acf50d1.jpg │ │ │ │ ├── d633a09b_479f_4af2_af9d_635b7a59e1b7.jpg │ │ │ │ ├── dafeaaed_0b93_45ea_8b04_00dd86c62d5e.jpg │ │ │ │ └── dd34e809_b1fc_4c75_b8f9_c5444a64cb47.jpg │ │ ├── InstalledPlugins.txt │ │ └── Localization │ │ │ └── installation.en.xml │ ├── Plugins │ │ └── index.htm │ ├── Connected Services │ │ └── index.htm │ ├── Views │ │ ├── Common │ │ │ ├── Footer.cshtml │ │ │ ├── Sitemap.cshtml │ │ │ ├── LanguageSelector.cshtml │ │ │ └── PageNotFound.cshtml │ │ ├── _ViewStart.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ └── CategoriesPartial.cshtml │ │ ├── Admin │ │ │ └── Administration.cshtml │ │ ├── Home │ │ │ └── Contact.cshtml │ │ └── Product │ │ │ ├── Index.cshtml │ │ │ └── Category.cshtml │ ├── key.snk │ ├── favicon.ico │ ├── Images │ │ ├── op.jpg │ │ ├── Add.png │ │ ├── Add2.png │ │ ├── Back.png │ │ ├── Bag.png │ │ ├── Edit.png │ │ ├── Login.png │ │ ├── Save.png │ │ ├── close.gif │ │ ├── hard.jpg │ │ ├── logo.jpg │ │ ├── menu.jpg │ │ ├── trash.jpg │ │ ├── Cancel.png │ │ ├── CopyTo.png │ │ ├── Delete.png │ │ ├── Disable.png │ │ ├── Enable.png │ │ ├── Logout.png │ │ ├── Role_32.png │ │ ├── Update.png │ │ ├── User_32.png │ │ ├── banner.jpg │ │ ├── favicon.ico │ │ ├── footer.jpg │ │ ├── header.jpg │ │ ├── popular.jpg │ │ ├── shadow.png │ │ ├── spacer.gif │ │ ├── taling.jpg │ │ ├── Admin_32.png │ │ ├── Product_32.png │ │ ├── Success_32.png │ │ ├── afterlogo.jpg │ │ ├── category.jpg │ │ ├── newtovar.jpg │ │ ├── Category_32.png │ │ ├── ShoppingCart.png │ │ ├── SalesOrder_32.png │ │ ├── ShoppingCart256.png │ │ ├── ShoppingCart32.png │ │ ├── ShoppingCart64.png │ │ ├── arrows-ffffff.png │ │ ├── menu_beforelogo.jpg │ │ ├── taling_center.jpg │ │ ├── byteartretail_logo.png │ │ ├── Products │ │ │ ├── ProductImage.png │ │ │ ├── 29ebfc59_e14a_49bc_9a41_d0796f392475.jpg │ │ │ ├── 2d3df03f_0663_4f9a_8f6c_cb0af683cd23.jpg │ │ │ ├── 333c0de9_cae2_4458_a675_3560e8525ae5.jpg │ │ │ ├── 43dd3fe6_4203_41dd_b570_2c9eacb7c021.jpg │ │ │ ├── 774f83b1_e90d_4ff1_a148_f90af591a865.jpg │ │ │ ├── 82d1556f_1238_43ce_a5fd_410cc246162e.jpg │ │ │ ├── a1c1738a_eaba_4c4c_b683_7c5b4eb64306.jpg │ │ │ ├── b182e978_85e1_474d_84e3_e505441e9000.jpg │ │ │ ├── bc0d0d76_3d79_472e_86bb_63a9376d2bab.jpg │ │ │ ├── bc2dbf1a_699a_4eaf_a49f_4eccc199bb55.jpg │ │ │ ├── c9285a49_972c_4356_a893_3e2a4e45c17d.jpg │ │ │ ├── d5d4367d_ab87_4687_8d7c_d1544acf50d1.jpg │ │ │ ├── d633a09b_479f_4af2_af9d_635b7a59e1b7.jpg │ │ │ ├── dafeaaed_0b93_45ea_8b04_00dd86c62d5e.jpg │ │ │ └── dd34e809_b1fc_4c75_b8f9_c5444a64cb47.jpg │ │ └── byteartretail_logo_trans.png │ ├── Global.asax │ ├── Infrastructure │ │ └── DependencyRegistrar.cs │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ └── glyphicons-halflings-regular.woff │ ├── App_Start │ │ └── FilterConfig.cs │ ├── Log │ │ ├── Info20170717.log │ │ ├── Info20170718.log │ │ └── Info20170719.log │ ├── Code │ │ └── UrlHelperExtension.cs │ ├── Models │ │ └── AccountModels.cs │ ├── Content │ │ └── Site.css │ └── Properties │ │ └── PublishProfiles │ │ └── CustomProfile.pubxml ├── LCL.Web.BootstrapMvc │ ├── Enums │ │ ├── Tables.cs │ │ ├── Forms.cs │ │ ├── Images.cs │ │ └── Menus.cs │ ├── key.snk │ ├── packages.config │ ├── CustomDictionary.xml │ └── ReadMe.txt ├── Documents │ ├── model.jpg │ ├── LCLDemo.eap │ ├── demo_p.jpg │ ├── demo_index.png │ ├── demo_list.png │ ├── DomainEvents.jpg │ └── EventAggregator.jpg ├── LCL.Domain │ ├── key.snk │ ├── ValueObject │ │ └── ValueObject.cs │ ├── Repositories │ │ ├── ICategoryRepository.cs │ │ ├── IRoleRepository.cs │ │ ├── IShoppingCartRepository.cs │ │ ├── IProductRepository.cs │ │ ├── IUserRoleRepository.cs │ │ └── ISalesOrderRepository.cs │ ├── Model │ │ ├── ViewModels │ │ │ └── ShoppingCartModels.cs │ │ ├── ValidationModel │ │ │ └── Role.cs │ │ └── ShoppingCart.cs │ ├── Specifications │ │ ├── UserStringEqualsSpecification.cs │ │ ├── UserEmailEqualsSpecification.cs │ │ ├── UserNameEqualsSpecification.cs │ │ ├── UserPasswordEqualsSpecification.cs │ │ ├── UserRolesSpecification.cs │ │ ├── SalesOrderBelongsToUserSpecification.cs │ │ ├── SalesOrderIDEqualsSpecification.cs │ │ ├── ShoppingCartBelongsToCustomerSpecification.cs │ │ └── ShoppingCartItemHasProductSpecification.cs │ ├── Events │ │ ├── GetUserOrdersEvent.cs │ │ ├── OrderConfirmedEvent.cs │ │ └── OrderDispatchedEvent.cs │ ├── Services │ │ └── IPostbackService.cs │ └── app.config ├── LCLWebMvcDemo.v12.suo ├── LCL.Application │ ├── key.snk │ └── packages.config ├── LCL.Infrastructure │ └── key.snk ├── LCL.Domain.Repositories │ ├── key.snk │ └── EntityFramework │ │ ├── CategoryRepository.cs │ │ ├── RoleRepository.cs │ │ ├── ModelConfigurations │ │ ├── ShoppingCartTypeConfiguration.cs │ │ ├── RoleTypeConfiguration.cs │ │ ├── SalesOrderTypeConfiguration.cs │ │ ├── ShoppingCartItemTypeConfiguration.cs │ │ ├── SalesLineTypeConfiguration.cs │ │ └── CategoryTypeConfiguration.cs │ │ └── ShoppingCartRepository.cs └── DeleteBin.bat └── Source ├── src ├── LCL.VSIXProject │ ├── Templates │ │ ├── ItemTemplates │ │ │ └── index.htm │ │ └── ProjectTemplates │ │ │ └── index.htm │ ├── _ReadMe.txt │ ├── Key.snk │ ├── logo.ico │ ├── logo.jpg │ ├── .vs │ │ └── LCL.VSIXProject │ │ │ └── v15 │ │ │ └── .suo │ └── Resources │ │ ├── FileHeaderCommands.png │ │ ├── ProjectTemplateCommand.png │ │ ├── InstallCodeSnippetsCommand.png │ │ ├── DeleteCustomFileNullLineCommand.png │ │ └── InstallCodeSnippetsCommandPackage.ico ├── LCL │ ├── key.snk │ ├── Utils.cs │ ├── Config │ │ ├── ISettings.cs │ │ └── Startup │ │ │ ├── LclStartupConfigurationExtensions.cs │ │ │ └── IModuleConfigurations.cs │ ├── Domain │ │ ├── Uow │ │ │ └── IUnitOfWork.cs │ │ ├── Services │ │ │ ├── Logging │ │ │ │ └── TraceLogger.cs │ │ │ ├── IDomainService.cs │ │ │ ├── Language │ │ │ │ └── ILocalizationService.cs │ │ │ └── DomainService.cs │ │ ├── Entities │ │ │ ├── IPassivable.cs │ │ │ ├── ISoftDelete.cs │ │ │ ├── IMayHaveTenant.cs │ │ │ ├── IMustHaveTenant.cs │ │ │ ├── LocaleStringResource.cs │ │ │ ├── EntityExtensions.cs │ │ │ ├── IAggregateRoot.cs │ │ │ ├── IEntity.cs │ │ │ └── AggregateRoot.cs │ │ ├── Specifications │ │ │ ├── ISpecificationParser.cs │ │ │ ├── ICompositeSpecification.cs │ │ │ ├── AnySpecification.cs │ │ │ ├── NoneSpecification.cs │ │ │ ├── ISpecification.cs │ │ │ ├── OrSpecification.cs │ │ │ ├── AndSpecification.cs │ │ │ ├── ExpressionSpecification.cs │ │ │ ├── SpecificationException.cs │ │ │ ├── AndNotSpecification.cs │ │ │ ├── NotSpecification.cs │ │ │ └── CompositeSpecification.cs │ │ ├── Repositories │ │ │ ├── SortOrder.cs │ │ │ ├── IRepositoryContext.cs │ │ │ └── xml │ │ │ │ └── IXMLRepositoryContext.cs │ │ └── Events │ │ │ ├── IDomainEventHandler.cs │ │ │ └── IDomainEvent.cs │ ├── Reflection │ │ └── MethodCaller.cs │ ├── Threading │ │ ├── SimpleRWLock!.cs │ │ ├── ManagedThreadPool.cs │ │ ├── IObservableActions.cs │ │ └── IParallelActions.cs │ ├── Extensions │ │ ├── StringExtensions.cs │ │ ├── EnumerableExtensions.cs │ │ ├── DateTimeExtensions.cs │ │ ├── ExceptionExtensions.cs │ │ ├── AssemblyExtensions.cs │ │ └── EnumExt.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── packages.config │ ├── IHandler.cs │ ├── Infrastructure │ │ ├── IStartupTask.cs │ │ ├── DependencyManagement │ │ │ ├── DependencyRegisterAttribute.cs │ │ │ └── IDependencyRegistrar.cs │ │ ├── IEngine.cs │ │ └── TypeFinder │ │ │ └── ITypeFinder.cs │ ├── Serialization │ │ ├── IObjectSerializer.cs │ │ └── SerializationException.cs │ ├── LVersion.cs │ ├── ServiceModel │ │ └── IApplicationServiceContract.cs │ ├── ObjectMapping │ │ ├── IObjectMapper.cs │ │ └── NullObjectMapper.cs │ ├── Plugins │ │ ├── IPlugin.cs │ │ └── BasePlugin.cs │ ├── GuidGenerator │ │ ├── IGuidGenerator.cs │ │ └── RegularGuidGenerator.cs │ ├── Transactions │ │ ├── ITransactionCoordinator.cs │ │ ├── SuppressedTransactionCoordinator.cs │ │ └── TransactionCoordinatorFactory.cs │ ├── Events │ │ ├── Bus │ │ │ ├── IEventBus.cs │ │ │ └── IBus.cs │ │ ├── IEventHandler.cs │ │ ├── HandlesAsynchronouslyAttribute.cs │ │ └── IEvent.cs │ ├── Caching │ │ ├── CachingMethod.cs │ │ └── ICacheProvider.cs │ ├── WriteLockDisposable.cs │ ├── DisposableObject.cs │ └── NamedTypeSelector.cs ├── LCL.Web │ ├── key.snk │ ├── Mvc │ │ ├── Models │ │ │ ├── AddOrEditViewModel.cs │ │ │ ├── IModelAttribute.cs │ │ │ ├── DeleteConfirmationModel.cs │ │ │ ├── EasyUIGridModel.cs │ │ │ └── PagedListViewModel.cs │ │ ├── ViewEngines │ │ │ ├── PluginRuntimeViewEngine.cs │ │ │ ├── IPluginViewEngine.cs │ │ │ └── IPluginViewEngineFactory.cs │ │ ├── Routes │ │ │ ├── IRouteProvider.cs │ │ │ └── IRoutePublisher.cs │ │ └── Template │ │ │ ├── TemplateServiceProvider.cs │ │ │ └── MemoryTemplateService.cs │ ├── NotifyType.cs │ ├── Localization │ │ ├── Localizer.cs │ │ ├── ILocalizedModelLocal.cs │ │ └── ILocalizedModel.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── PermissionKeys.cs │ ├── Configuration │ │ └── LclMvcConfigurationExtensions.cs │ ├── Fakes │ │ ├── Extensions.cs │ │ ├── FakePrincipal.cs │ │ └── FakeIdentity.cs │ ├── Security │ │ └── SslRequirement.cs │ └── packages.config ├── _Items │ ├── _ReadMe.txt │ ├── SharedAssemblyInfo.cs │ └── SharedAssemblyVersionInfo.cs ├── LCL.Repositories.MongoDB │ ├── key.snk │ ├── DependencyRegistrar.cs │ ├── packages.config │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── IMongoDBRepositoryContext.cs │ ├── EfStartUpTask.cs │ ├── IMongoDBRepositoryContextSettings.cs │ └── Conventions │ │ └── GuidIDGeneratorConvention.cs ├── LCL.Repositories.EntityFramework │ ├── key.snk │ ├── DependencyRegistrar.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── IEntityFrameworkRepositoryContext.cs │ ├── packages.config │ ├── Mapping │ │ └── Configuration │ │ │ └── SettingMap.cs │ └── Initializers │ │ └── AutoMigrationsConfiguration.cs ├── LCL.Repositories.NHibernate │ ├── DependencyRegistrar.cs │ ├── packages.config │ └── Properties │ │ └── AssemblyInfo.cs ├── LCL.AutoMapper │ ├── packages.config │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── AutoMapAttributeBase.cs │ ├── AutoMapperConfigurationExtensions.cs │ ├── AutoMapperObjectMapper.cs │ └── AutoMapAttribute.cs └── LCL.RedisCache │ ├── packages.config │ ├── IAbpRedisCacheDatabaseProvider.cs │ ├── IRedisCacheSerializer.cs │ ├── app.config │ └── DependencyRegistrar.cs ├── Build.bat ├── README.md ├── 备份源代码.bat ├── .nuget ├── NuGet.exe ├── 发布到nuget官网.bat ├── NuGet.Config └── pushNupkg.bat ├── Document ├── logo.ico ├── logo.jpg └── StyleCop.Cache ├── tools └── FxCop │ ├── FxCop.chm │ ├── FxCop.exe │ ├── FxCopUI.dll │ ├── MSSp3en.lex │ ├── FxCopCmd.exe │ ├── FxCopSdk.dll │ ├── MSSp3ena.lex │ ├── MSSpell3.dll │ ├── msdia100.dll │ ├── FxCopCommon.dll │ ├── Microsoft.Cci.dll │ ├── Rules │ ├── DesignRules.dll │ ├── NamingRules.dll │ ├── UsageRules.dll │ ├── MobilityRules.dll │ ├── SecurityRules.dll │ ├── PerformanceRules.dll │ ├── PortabilityRules.dll │ ├── GlobalizationRules.dll │ ├── InteroperabilityRules.dll │ └── SecurityTransparencyRules.dll │ ├── Repository │ ├── system32.bin │ └── Compatibility │ │ └── Desktop2.0.xml │ ├── Engines │ ├── IntrospectionForms.dll │ └── IntrospectionAnalysisEngine.dll │ ├── Microsoft.VisualStudio.CodeAnalysis.dll │ ├── Microsoft.VisualStudio.CodeAnalysis.Common.dll │ └── Microsoft.VisualStudio.CodeAnalysis.Interop.dll ├── Tests └── LCL.Tests │ ├── ACore │ └── Domain │ │ ├── Repositories │ │ ├── ICategoryRepository.cs │ │ ├── IRoleRepository.cs │ │ ├── MongoDB │ │ │ ├── CategoryRepository.cs │ │ │ ├── RoleRepository.cs │ │ │ └── ShoppingCartRepository.cs │ │ ├── EntityFramework │ │ │ ├── CategoryRepository.cs │ │ │ ├── RoleRepository.cs │ │ │ ├── ModelConfigurations │ │ │ │ ├── ShoppingCartTypeConfiguration.cs │ │ │ │ ├── SalesOrderTypeConfiguration.cs │ │ │ │ ├── ShoppingCartItemTypeConfiguration.cs │ │ │ │ └── SalesLineTypeConfiguration.cs │ │ │ └── ShoppingCartRepository.cs │ │ ├── Specifications │ │ │ ├── UserStringEqualsSpecification.cs │ │ │ ├── UserEmailEqualsSpecification.cs │ │ │ ├── UserNameEqualsSpecification.cs │ │ │ ├── UserPasswordEqualsSpecification.cs │ │ │ ├── UserRolesSpecification.cs │ │ │ ├── SalesOrderBelongsToUserSpecification.cs │ │ │ ├── SalesOrderIDEqualsSpecification.cs │ │ │ ├── ShoppingCartBelongsToCustomerSpecification.cs │ │ │ └── ShoppingCartItemHasProductSpecification.cs │ │ ├── IShoppingCartRepository.cs │ │ ├── IProductRepository.cs │ │ └── IUserRoleRepository.cs │ │ ├── Events │ │ ├── GetUserOrdersEvent.cs │ │ ├── OrderConfirmedEvent.cs │ │ └── OrderDispatchedEvent.cs │ │ └── Model │ │ └── ShoppingCart.cs │ ├── TestsBase.cs │ ├── Domain │ ├── Services │ │ └── ServicesTest.cs │ └── Events │ │ └── Bus │ │ └── BusTest.cs │ ├── Fakes │ └── TypeFindingBase.cs │ ├── packages.config │ └── Infrastructuretest │ └── TypeFinderTests.cs ├── DeleteBin.bat ├── StyleCop.Cache ├── common.props └── appveyor.yml /LCLDemo/LCL.Services/ReadMe.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/index.htm: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/Models/index.htm: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/Plugins/index.htm: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/index.htm: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Plugins/index.htm: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Services/Plugins/index.htm: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/Controllers/v2/index.htm: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Connected Services/index.htm: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Views/Common/Footer.cshtml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Services/Connected Services/index.htm: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Views/Common/Sitemap.cshtml: -------------------------------------------------------------------------------- 1 | 呵呵呵 -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Views/Common/LanguageSelector.cshtml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Source/src/LCL.VSIXProject/Templates/ItemTemplates/index.htm: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Source/src/LCL.VSIXProject/Templates/ProjectTemplates/index.htm: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Source/Build.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/Build.bat -------------------------------------------------------------------------------- /Source/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/README.md -------------------------------------------------------------------------------- /Source/src/LCL.VSIXProject/_ReadMe.txt: -------------------------------------------------------------------------------- 1 | http://blog.csdn.net/slowlifes/article/details/53130951 -------------------------------------------------------------------------------- /Source/备份源代码.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/备份源代码.bat -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/Shared/_Layout.cshtml"; 3 | } -------------------------------------------------------------------------------- /Source/src/LCL/key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL/key.snk -------------------------------------------------------------------------------- /LCLDemo/LCL.Web.BootstrapMvc/Enums/Tables.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Web.BootstrapMvc.Enums 2 | { 3 | 4 | } 5 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/Shared/_Layout.cshtml"; 3 | } 4 | -------------------------------------------------------------------------------- /Source/.nuget/NuGet.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/.nuget/NuGet.exe -------------------------------------------------------------------------------- /Source/Document/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/Document/logo.ico -------------------------------------------------------------------------------- /Source/Document/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/Document/logo.jpg -------------------------------------------------------------------------------- /Source/src/LCL/Utils.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL/Utils.cs -------------------------------------------------------------------------------- /LCLDemo/Documents/model.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/Documents/model.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.Domain/key.snk -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/key.snk -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/key.snk -------------------------------------------------------------------------------- /Source/src/LCL.Web/key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.Web/key.snk -------------------------------------------------------------------------------- /LCLDemo/Documents/LCLDemo.eap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/Documents/LCLDemo.eap -------------------------------------------------------------------------------- /LCLDemo/Documents/demo_p.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/Documents/demo_p.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/favicon.ico -------------------------------------------------------------------------------- /LCLDemo/LCLWebMvcDemo.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCLWebMvcDemo.v12.suo -------------------------------------------------------------------------------- /Source/src/_Items/_ReadMe.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/_Items/_ReadMe.txt -------------------------------------------------------------------------------- /Source/tools/FxCop/FxCop.chm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/FxCop.chm -------------------------------------------------------------------------------- /Source/tools/FxCop/FxCop.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/FxCop.exe -------------------------------------------------------------------------------- /Source/tools/FxCop/FxCopUI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/FxCopUI.dll -------------------------------------------------------------------------------- /Source/tools/FxCop/MSSp3en.lex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/MSSp3en.lex -------------------------------------------------------------------------------- /LCLDemo/Documents/demo_index.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/Documents/demo_index.png -------------------------------------------------------------------------------- /LCLDemo/Documents/demo_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/Documents/demo_list.png -------------------------------------------------------------------------------- /LCLDemo/LCL.Application/key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.Application/key.snk -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/op.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/op.jpg -------------------------------------------------------------------------------- /Source/tools/FxCop/FxCopCmd.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/FxCopCmd.exe -------------------------------------------------------------------------------- /Source/tools/FxCop/FxCopSdk.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/FxCopSdk.dll -------------------------------------------------------------------------------- /Source/tools/FxCop/MSSp3ena.lex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/MSSp3ena.lex -------------------------------------------------------------------------------- /Source/tools/FxCop/MSSpell3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/MSSpell3.dll -------------------------------------------------------------------------------- /Source/tools/FxCop/msdia100.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/msdia100.dll -------------------------------------------------------------------------------- /LCLDemo/Documents/DomainEvents.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/Documents/DomainEvents.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.Infrastructure/key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.Infrastructure/key.snk -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Add.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Add2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Add2.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Back.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Bag.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Edit.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Login.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Save.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/close.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/close.gif -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/hard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/hard.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/logo.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/menu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/menu.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/trash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/trash.jpg -------------------------------------------------------------------------------- /Source/.nuget/发布到nuget官网.bat: -------------------------------------------------------------------------------- 1 | nuget push *.nupkg -s https://www.nuget.org 7b0e7594-53e2-4dd9-94c5-7071150759b1 2 | 3 | pause -------------------------------------------------------------------------------- /Source/src/LCL.VSIXProject/Key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.VSIXProject/Key.snk -------------------------------------------------------------------------------- /Source/src/LCL.VSIXProject/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.VSIXProject/logo.ico -------------------------------------------------------------------------------- /Source/src/LCL.VSIXProject/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.VSIXProject/logo.jpg -------------------------------------------------------------------------------- /Source/tools/FxCop/FxCopCommon.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/FxCopCommon.dll -------------------------------------------------------------------------------- /LCLDemo/Documents/EventAggregator.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/Documents/EventAggregator.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.Services/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="LCL.Services.Global" Language="C#" %> 2 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Web.BootstrapMvc/key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.Web.BootstrapMvc/key.snk -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="LCL.WebMvc.MvcApplication" Language="C#" %> 2 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Cancel.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/CopyTo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/CopyTo.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Delete.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Disable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Disable.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Enable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Enable.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Logout.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Role_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Role_32.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Update.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/User_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/User_32.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/banner.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/favicon.ico -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/footer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/footer.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/header.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/popular.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/popular.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/shadow.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/spacer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/spacer.gif -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/taling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/taling.jpg -------------------------------------------------------------------------------- /Source/tools/FxCop/Microsoft.Cci.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Microsoft.Cci.dll -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain.Repositories/key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.Domain.Repositories/key.snk -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/Content/myStyle.css: -------------------------------------------------------------------------------- 1 | .swagger-section #header { 2 | background-color: #0000ff; 3 | padding: 14px; 4 | } 5 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="LCL.WebAPI.WebApiApplication" Language="C#" %> 2 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Admin_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Admin_32.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Product_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Product_32.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Success_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Success_32.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/afterlogo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/afterlogo.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/category.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/category.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/newtovar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/newtovar.jpg -------------------------------------------------------------------------------- /Source/src/LCL/Config/ISettings.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace LCL.Config 3 | { 4 | public interface ISettings 5 | { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Uow/IUnitOfWork.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL/Domain/Uow/IUnitOfWork.cs -------------------------------------------------------------------------------- /Source/tools/FxCop/Rules/DesignRules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Rules/DesignRules.dll -------------------------------------------------------------------------------- /Source/tools/FxCop/Rules/NamingRules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Rules/NamingRules.dll -------------------------------------------------------------------------------- /Source/tools/FxCop/Rules/UsageRules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Rules/UsageRules.dll -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/LCLTestDB.sdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/LCLTestDB.sdf -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/LCLTestDB.sdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/LCLTestDB.sdf -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Category_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Category_32.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/ShoppingCart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/ShoppingCart.png -------------------------------------------------------------------------------- /Source/src/LCL/Reflection/MethodCaller.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL/Reflection/MethodCaller.cs -------------------------------------------------------------------------------- /Source/src/LCL/Threading/SimpleRWLock!.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL/Threading/SimpleRWLock!.cs -------------------------------------------------------------------------------- /Source/tools/FxCop/Repository/system32.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Repository/system32.bin -------------------------------------------------------------------------------- /Source/tools/FxCop/Rules/MobilityRules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Rules/MobilityRules.dll -------------------------------------------------------------------------------- /Source/tools/FxCop/Rules/SecurityRules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Rules/SecurityRules.dll -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Start/SwaggerConfig.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Start/SwaggerConfig.cs -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/SalesOrder_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/SalesOrder_32.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/ShoppingCart256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/ShoppingCart256.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/ShoppingCart32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/ShoppingCart32.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/ShoppingCart64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/ShoppingCart64.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/arrows-ffffff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/arrows-ffffff.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/menu_beforelogo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/menu_beforelogo.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/taling_center.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/taling_center.jpg -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.MongoDB/key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.Repositories.MongoDB/key.snk -------------------------------------------------------------------------------- /Source/src/LCL/Extensions/StringExtensions.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL/Extensions/StringExtensions.cs -------------------------------------------------------------------------------- /Source/src/LCL/Threading/ManagedThreadPool.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL/Threading/ManagedThreadPool.cs -------------------------------------------------------------------------------- /Source/tools/FxCop/Rules/PerformanceRules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Rules/PerformanceRules.dll -------------------------------------------------------------------------------- /Source/tools/FxCop/Rules/PortabilityRules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Rules/PortabilityRules.dll -------------------------------------------------------------------------------- /Source/tools/FxCop/Rules/GlobalizationRules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Rules/GlobalizationRules.dll -------------------------------------------------------------------------------- /LCLDemo/LCL.Services/OrderService.svc: -------------------------------------------------------------------------------- 1 | <%@ ServiceHost Language="C#" Debug="true" Service="LCL.Services.OrderService" CodeBehind="OrderService.svc.cs" %> 2 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Services/UserService.svc: -------------------------------------------------------------------------------- 1 | <%@ ServiceHost Language="C#" Debug="true" Service="LCL.Services.UserService" CodeBehind="UserService.svc.cs" %> 2 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/Restful API 接口规范.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/Restful API 接口规范.doc -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/favicon.ico -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/favicon.ico -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/byteartretail_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/byteartretail_logo.png -------------------------------------------------------------------------------- /Source/src/LCL/Extensions/EnumerableExtensions.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL/Extensions/EnumerableExtensions.cs -------------------------------------------------------------------------------- /Source/tools/FxCop/Engines/IntrospectionForms.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Engines/IntrospectionForms.dll -------------------------------------------------------------------------------- /Source/tools/FxCop/Rules/InteroperabilityRules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Rules/InteroperabilityRules.dll -------------------------------------------------------------------------------- /LCLDemo/LCL.Services/ProductService.svc: -------------------------------------------------------------------------------- 1 | <%@ ServiceHost Language="C#" Debug="true" Service="LCL.Services.ProductService" CodeBehind="ProductService.svc.cs" %> 2 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/InstalledPlugins.txt: -------------------------------------------------------------------------------- 1 | LCL.Plugin.EasyUI 2 | LCL.Plugin.UCenter 3 | LCL.Plugin.Rbac 4 | Widgets.NivoSlider 5 | Widgets.Avatars 6 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/InstalledPlugins.txt: -------------------------------------------------------------------------------- 1 | LCL.Plugin.EasyUI 2 | LCL.Plugin.UCenter 3 | LCL.Plugin.Rbac 4 | Widgets.NivoSlider 5 | Widgets.Avatars 6 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/ProductImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/ProductImage.png -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.EntityFramework/key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.Repositories.EntityFramework/key.snk -------------------------------------------------------------------------------- /Source/src/LCL.Web/Mvc/Models/AddOrEditViewModel.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.Web/Mvc/Models/AddOrEditViewModel.cs -------------------------------------------------------------------------------- /Source/src/LCL.Web/NotifyType.cs: -------------------------------------------------------------------------------- 1 | namespace LCL 2 | { 3 | public enum NotifyType 4 | { 5 | Success, 6 | Error 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/eftestcontext.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/eftestcontext.sql -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/eftestcontext.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/eftestcontext.sql -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/byteartretail_logo_trans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/byteartretail_logo_trans.png -------------------------------------------------------------------------------- /Source/src/LCL.VSIXProject/.vs/LCL.VSIXProject/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.VSIXProject/.vs/LCL.VSIXProject/v15/.suo -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Services/Logging/TraceLogger.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL/Domain/Services/Logging/TraceLogger.cs -------------------------------------------------------------------------------- /Source/tools/FxCop/Rules/SecurityTransparencyRules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Rules/SecurityTransparencyRules.dll -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/Infrastructure/DependencyRegistrar.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/Infrastructure/DependencyRegistrar.cs -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Infrastructure/DependencyRegistrar.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Infrastructure/DependencyRegistrar.cs -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /LCLDemo/LCL.Services/Infrastructure/DependencyRegistrar.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.Services/Infrastructure/DependencyRegistrar.cs -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.MongoDB/DependencyRegistrar.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.Repositories.MongoDB/DependencyRegistrar.cs -------------------------------------------------------------------------------- /Source/src/LCL.VSIXProject/Resources/FileHeaderCommands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.VSIXProject/Resources/FileHeaderCommands.png -------------------------------------------------------------------------------- /Source/src/LCL.Web/Localization/Localizer.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Web.Localization 2 | { 3 | public delegate LocalizedString Localizer(string text, params object[] args); 4 | } -------------------------------------------------------------------------------- /Source/tools/FxCop/Engines/IntrospectionAnalysisEngine.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Engines/IntrospectionAnalysisEngine.dll -------------------------------------------------------------------------------- /Source/tools/FxCop/Microsoft.VisualStudio.CodeAnalysis.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Microsoft.VisualStudio.CodeAnalysis.dll -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.NHibernate/DependencyRegistrar.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.Repositories.NHibernate/DependencyRegistrar.cs -------------------------------------------------------------------------------- /Source/src/LCL.Web/Mvc/ViewEngines/PluginRuntimeViewEngine.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.Web/Mvc/ViewEngines/PluginRuntimeViewEngine.cs -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Entities/IPassivable.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Domain.Entities 2 | { 3 | public interface IPassivable 4 | { 5 | bool IsActive { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /Source/src/LCL/Extensions/DateTimeExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace LCL 4 | { 5 | public static class DateTimeExtensions 6 | { 7 | //... 8 | } 9 | } -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/ProductImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/ProductImage.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/ProductImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/ProductImage.png -------------------------------------------------------------------------------- /Source/src/LCL.AutoMapper/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/src/LCL.VSIXProject/Resources/ProjectTemplateCommand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.VSIXProject/Resources/ProjectTemplateCommand.png -------------------------------------------------------------------------------- /Source/tools/FxCop/Microsoft.VisualStudio.CodeAnalysis.Common.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Microsoft.VisualStudio.CodeAnalysis.Common.dll -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.EntityFramework/DependencyRegistrar.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.Repositories.EntityFramework/DependencyRegistrar.cs -------------------------------------------------------------------------------- /Source/src/LCL.VSIXProject/Resources/InstallCodeSnippetsCommand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.VSIXProject/Resources/InstallCodeSnippetsCommand.png -------------------------------------------------------------------------------- /Source/src/LCL.Web/Mvc/Models/IModelAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace System.Web.Mvc 2 | { 3 | public interface IModelAttribute 4 | { 5 | string Name { get; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Entities/ISoftDelete.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Domain.Entities 2 | { 3 | public interface ISoftDelete 4 | { 5 | bool IsDeleted { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Source/tools/FxCop/Microsoft.VisualStudio.CodeAnalysis.Interop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/tools/FxCop/Microsoft.VisualStudio.CodeAnalysis.Interop.dll -------------------------------------------------------------------------------- /Source/src/LCL.RedisCache/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/src/LCL.VSIXProject/Resources/DeleteCustomFileNullLineCommand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.VSIXProject/Resources/DeleteCustomFileNullLineCommand.png -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/29ebfc59_e14a_49bc_9a41_d0796f392475.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/29ebfc59_e14a_49bc_9a41_d0796f392475.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/2d3df03f_0663_4f9a_8f6c_cb0af683cd23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/2d3df03f_0663_4f9a_8f6c_cb0af683cd23.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/333c0de9_cae2_4458_a675_3560e8525ae5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/333c0de9_cae2_4458_a675_3560e8525ae5.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/43dd3fe6_4203_41dd_b570_2c9eacb7c021.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/43dd3fe6_4203_41dd_b570_2c9eacb7c021.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/774f83b1_e90d_4ff1_a148_f90af591a865.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/774f83b1_e90d_4ff1_a148_f90af591a865.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/82d1556f_1238_43ce_a5fd_410cc246162e.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/82d1556f_1238_43ce_a5fd_410cc246162e.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/a1c1738a_eaba_4c4c_b683_7c5b4eb64306.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/a1c1738a_eaba_4c4c_b683_7c5b4eb64306.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/b182e978_85e1_474d_84e3_e505441e9000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/b182e978_85e1_474d_84e3_e505441e9000.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/bc0d0d76_3d79_472e_86bb_63a9376d2bab.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/bc0d0d76_3d79_472e_86bb_63a9376d2bab.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/bc2dbf1a_699a_4eaf_a49f_4eccc199bb55.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/bc2dbf1a_699a_4eaf_a49f_4eccc199bb55.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/c9285a49_972c_4356_a893_3e2a4e45c17d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/c9285a49_972c_4356_a893_3e2a4e45c17d.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/d5d4367d_ab87_4687_8d7c_d1544acf50d1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/d5d4367d_ab87_4687_8d7c_d1544acf50d1.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/d633a09b_479f_4af2_af9d_635b7a59e1b7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/d633a09b_479f_4af2_af9d_635b7a59e1b7.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/dafeaaed_0b93_45ea_8b04_00dd86c62d5e.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/dafeaaed_0b93_45ea_8b04_00dd86c62d5e.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Images/Products/dd34e809_b1fc_4c75_b8f9_c5444a64cb47.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/Images/Products/dd34e809_b1fc_4c75_b8f9_c5444a64cb47.jpg -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.MongoDB/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.NHibernate/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/src/LCL.VSIXProject/Resources/InstallCodeSnippetsCommandPackage.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/Source/src/LCL.VSIXProject/Resources/InstallCodeSnippetsCommandPackage.ico -------------------------------------------------------------------------------- /Source/.nuget/NuGet.Config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Source/Document/StyleCop.Cache: -------------------------------------------------------------------------------- 1 | 2 | 12 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/Localization/ILocalizedModelLocal.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Web.Localization 2 | { 3 | public interface ILocalizedModelLocal 4 | { 5 | int LanguageId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/Views/Home/About.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "About"; 3 | } 4 |

@ViewBag.Title.

5 |

@ViewBag.Message

6 | 7 |

Use this area to provide additional information.

8 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/29ebfc59_e14a_49bc_9a41_d0796f392475.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/29ebfc59_e14a_49bc_9a41_d0796f392475.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/2d3df03f_0663_4f9a_8f6c_cb0af683cd23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/2d3df03f_0663_4f9a_8f6c_cb0af683cd23.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/333c0de9_cae2_4458_a675_3560e8525ae5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/333c0de9_cae2_4458_a675_3560e8525ae5.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/43dd3fe6_4203_41dd_b570_2c9eacb7c021.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/43dd3fe6_4203_41dd_b570_2c9eacb7c021.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/774f83b1_e90d_4ff1_a148_f90af591a865.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/774f83b1_e90d_4ff1_a148_f90af591a865.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/82d1556f_1238_43ce_a5fd_410cc246162e.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/82d1556f_1238_43ce_a5fd_410cc246162e.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/a1c1738a_eaba_4c4c_b683_7c5b4eb64306.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/a1c1738a_eaba_4c4c_b683_7c5b4eb64306.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/b182e978_85e1_474d_84e3_e505441e9000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/b182e978_85e1_474d_84e3_e505441e9000.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/bc0d0d76_3d79_472e_86bb_63a9376d2bab.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/bc0d0d76_3d79_472e_86bb_63a9376d2bab.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/bc2dbf1a_699a_4eaf_a49f_4eccc199bb55.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/bc2dbf1a_699a_4eaf_a49f_4eccc199bb55.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/c9285a49_972c_4356_a893_3e2a4e45c17d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/c9285a49_972c_4356_a893_3e2a4e45c17d.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/d5d4367d_ab87_4687_8d7c_d1544acf50d1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/d5d4367d_ab87_4687_8d7c_d1544acf50d1.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/d633a09b_479f_4af2_af9d_635b7a59e1b7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/d633a09b_479f_4af2_af9d_635b7a59e1b7.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/dafeaaed_0b93_45ea_8b04_00dd86c62d5e.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/dafeaaed_0b93_45ea_8b04_00dd86c62d5e.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/dd34e809_b1fc_4c75_b8f9_c5444a64cb47.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebAPI/App_Data/demo_data/Products/dd34e809_b1fc_4c75_b8f9_c5444a64cb47.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/29ebfc59_e14a_49bc_9a41_d0796f392475.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/29ebfc59_e14a_49bc_9a41_d0796f392475.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/2d3df03f_0663_4f9a_8f6c_cb0af683cd23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/2d3df03f_0663_4f9a_8f6c_cb0af683cd23.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/333c0de9_cae2_4458_a675_3560e8525ae5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/333c0de9_cae2_4458_a675_3560e8525ae5.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/43dd3fe6_4203_41dd_b570_2c9eacb7c021.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/43dd3fe6_4203_41dd_b570_2c9eacb7c021.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/774f83b1_e90d_4ff1_a148_f90af591a865.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/774f83b1_e90d_4ff1_a148_f90af591a865.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/82d1556f_1238_43ce_a5fd_410cc246162e.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/82d1556f_1238_43ce_a5fd_410cc246162e.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/a1c1738a_eaba_4c4c_b683_7c5b4eb64306.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/a1c1738a_eaba_4c4c_b683_7c5b4eb64306.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/b182e978_85e1_474d_84e3_e505441e9000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/b182e978_85e1_474d_84e3_e505441e9000.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/bc0d0d76_3d79_472e_86bb_63a9376d2bab.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/bc0d0d76_3d79_472e_86bb_63a9376d2bab.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/bc2dbf1a_699a_4eaf_a49f_4eccc199bb55.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/bc2dbf1a_699a_4eaf_a49f_4eccc199bb55.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/c9285a49_972c_4356_a893_3e2a4e45c17d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/c9285a49_972c_4356_a893_3e2a4e45c17d.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/d5d4367d_ab87_4687_8d7c_d1544acf50d1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/d5d4367d_ab87_4687_8d7c_d1544acf50d1.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/d633a09b_479f_4af2_af9d_635b7a59e1b7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/d633a09b_479f_4af2_af9d_635b7a59e1b7.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/dafeaaed_0b93_45ea_8b04_00dd86c62d5e.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/dafeaaed_0b93_45ea_8b04_00dd86c62d5e.jpg -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/dd34e809_b1fc_4c75_b8f9_c5444a64cb47.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luomingui/LCLFramework/HEAD/LCLDemo/LCL.WebMvc/App_Data/demo_data/Products/dd34e809_b1fc_4c75_b8f9_c5444a64cb47.jpg -------------------------------------------------------------------------------- /Source/src/LCL/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | [assembly: AssemblyDefaultAlias("LCL.dll")] 4 | [assembly: AssemblyDescription("LCL Application Development Framework")] 5 | [assembly: AssemblyTitle("LCL")] -------------------------------------------------------------------------------- /Source/src/LCL.AutoMapper/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | [assembly: AssemblyDefaultAlias("LCL.dll")] 4 | [assembly: AssemblyDescription("LCL Repositories EntityFramework")] 5 | [assembly: AssemblyTitle("LCL")] -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.MongoDB/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | [assembly: AssemblyDefaultAlias("LCL.dll")] 4 | [assembly: AssemblyDescription("LCL Repositories MongoDB")] 5 | [assembly: AssemblyTitle("LCL")] -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.NHibernate/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | [assembly: AssemblyDefaultAlias("LCL.dll")] 4 | [assembly: AssemblyDescription("LCL Repositories NHibernate")] 5 | [assembly: AssemblyTitle("LCL")] -------------------------------------------------------------------------------- /Source/src/LCL.Web/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | [assembly: AssemblyDefaultAlias("LCL.Web.dll")] 4 | [assembly: AssemblyDescription("LCL Web Application Development Framework")] 5 | [assembly: AssemblyTitle("LCL.Web")] -------------------------------------------------------------------------------- /LCLDemo/LCL.Application/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Views/Common/PageNotFound.cshtml: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |

Error

5 |
6 |
7 | 8 |
9 |
10 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @model System.Web.Mvc.HandleErrorInfo 2 | 3 | @{ 4 | ViewBag.Title = "Error"; 5 | } 6 | 7 |
8 |

@Model.Exception.Message

9 |
10 | -------------------------------------------------------------------------------- /Source/src/LCL.RedisCache/IAbpRedisCacheDatabaseProvider.cs: -------------------------------------------------------------------------------- 1 | using StackExchange.Redis; 2 | 3 | namespace LCL.Caching.Redis 4 | { 5 | public interface IAbpRedisCacheDatabaseProvider 6 | { 7 | IDatabase GetDatabase(); 8 | } 9 | } -------------------------------------------------------------------------------- /Source/src/LCL/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.EntityFramework/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | [assembly: AssemblyDefaultAlias("LCL.dll")] 4 | [assembly: AssemblyDescription("LCL Repositories EntityFramework")] 5 | [assembly: AssemblyTitle("LCL")] -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Specifications/ISpecificationParser.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Domain.Specifications 2 | { 3 | public interface ISpecificationParser 4 | { 5 | TCriteria Parse(ISpecification specification); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Source/src/LCL/IHandler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace LCL 7 | { 8 | public interface IHandler 9 | { 10 | void Handle(T message); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Web.BootstrapMvc/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Data/Localization/installation.en.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Admin user email 5 | 6 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Data/Localization/installation.en.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Admin user email 5 | 6 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Services/IDomainService.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace LCL.Domain.Services 3 | { 4 | /// 5 | /// 表示继承于该接口的类型都是领域服务(Domain Service)类型。 6 | /// 7 | public partial interface IDomainService 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Source/src/LCL/Infrastructure/IStartupTask.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Infrastructure 2 | { 3 | /// 4 | /// 系统启动时执行任务 5 | /// 6 | public interface IStartupTask 7 | { 8 | void Execute(); 9 | int Order { get; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/Mvc/Routes/IRouteProvider.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Routing; 2 | 3 | namespace LCL.Web.Mvc.Routes 4 | { 5 | public interface IRouteProvider 6 | { 7 | void RegisterRoutes(RouteCollection routes); 8 | 9 | int Priority { get; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Specifications/ICompositeSpecification.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Domain.Specifications 2 | { 3 | public interface ICompositeSpecification : ISpecification 4 | { 5 | ISpecification Left { get; } 6 | ISpecification Right { get; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Source/src/LCL/Serialization/IObjectSerializer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace LCL.Serialization 4 | { 5 | public interface IObjectSerializer 6 | { 7 | byte[] Serialize(TObject obj); 8 | TObject Deserialize(byte[] stream); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Source/tools/FxCop/Repository/Compatibility/Desktop2.0.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /Source/src/LCL/LVersion.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace LCL 3 | { 4 | public static class LVersion 5 | { 6 | public static string CurrentVersion 7 | { 8 | get 9 | { 10 | return "3.40"; 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Entities/IMayHaveTenant.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace LCL.Domain.Entities 7 | { 8 | public interface IMayHaveTenant 9 | { 10 | int? TenantId { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Entities/IMustHaveTenant.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace LCL.Domain.Entities 7 | { 8 | public interface IMustHaveTenant 9 | { 10 | int TenantId { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/Mvc/Models/DeleteConfirmationModel.cs: -------------------------------------------------------------------------------- 1 | namespace System.Web.Mvc 2 | { 3 | public class DeleteConfirmationModel : BaseNopEntityModel 4 | { 5 | public string ControllerName { get; set; } 6 | public string ActionName { get; set; } 7 | public string WindowId { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /Source/src/LCL/ServiceModel/IApplicationServiceContract.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace LCL.ServiceModel 4 | { 5 | /// 6 | /// 表示实现该接口的类型为Application Service Contract。 7 | /// 8 | public interface IApplicationServiceContract : IDisposable 9 | { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/ValueObject/ValueObject.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace LCL.Domain.ValueObject 8 | { 9 | 10 | public class IDList : System.Collections.Generic.List 11 | { 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Source/src/LCL/ObjectMapping/IObjectMapper.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Entities; 2 | 3 | namespace LCL.ObjectMapping 4 | { 5 | public interface IObjectMapper 6 | { 7 | TDestination Map(object source); 8 | TDestination Map(TSource source, TDestination destination); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Source/src/LCL/Plugins/IPlugin.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Plugins 2 | { 3 | /// 4 | /// 插件的操作接口,主要有设置插件的属性信息,安装插件接口,卸载插件接口。 5 | /// 6 | public interface IPlugin 7 | { 8 | PluginDescriptor PluginDescriptor { get; set; } 9 | void Install(); 10 | void Uninstall(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Source/src/LCL/GuidGenerator/IGuidGenerator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace LCL 4 | { 5 | /// 6 | /// Used to generate Ids. 7 | /// 8 | public interface IGuidGenerator 9 | { 10 | /// 11 | /// Creates a GUID. 12 | /// 13 | Guid Create(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Repositories/ICategoryRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Repositories; 3 | using LCL.Domain.Model; 4 | 5 | namespace LCL.Domain.Repositories 6 | { 7 | /// 8 | /// 表示用于“商品分类”聚合根的仓储接口。 9 | /// 10 | public interface ICategoryRepository : IRepository 11 | { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Repositories/IRoleRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Repositories; 3 | using LCL.Domain.Model; 4 | 5 | namespace LCL.Domain.Repositories 6 | { 7 | /// 8 | /// 表示用于“角色”聚合根的仓储接口。 9 | /// 10 | public interface IRoleRepository : IRepository 11 | { 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.EntityFramework/IEntityFrameworkRepositoryContext.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Repositories; 2 | using System.Data.Entity; 3 | 4 | namespace LCL.Repositories.EntityFramework 5 | { 6 | public interface IEntityFrameworkRepositoryContext : IRepositoryContext 7 | { 8 | DbContext Context { get; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Repositories/SortOrder.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace LCL 8 | { 9 | public enum SortOrder 10 | { 11 | Unspecified = -1, 12 | Ascending = 0, 13 | Descending = 1 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Source/src/LCL/Extensions/ExceptionExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.ExceptionServices; 3 | 4 | namespace LCL 5 | { 6 | public static class ExceptionExtensions 7 | { 8 | public static void ReThrow(this Exception exception) 9 | { 10 | ExceptionDispatchInfo.Capture(exception).Throw(); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/App_Start/FilterConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Web; 2 | using System.Web.Mvc; 3 | 4 | namespace LCL.WebAPI 5 | { 6 | public class FilterConfig 7 | { 8 | public static void RegisterGlobalFilters(GlobalFilterCollection filters) 9 | { 10 | filters.Add(new HandleErrorAttribute()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/App_Start/FilterConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Web; 2 | using System.Web.Mvc; 3 | 4 | namespace LCL.WebMvc 5 | { 6 | public class FilterConfig 7 | { 8 | public static void RegisterGlobalFilters(GlobalFilterCollection filters) 9 | { 10 | filters.Add(new HandleErrorAttribute()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Source/src/LCL/Transactions/ITransactionCoordinator.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Uow; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace LCL.Transactions 9 | { 10 | public interface ITransactionCoordinator : IUnitOfWork, IDisposable 11 | { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/Log/Info20170731.log: -------------------------------------------------------------------------------- 1 | 2017/7/31 16:37:25|1|Inform|LCL Initialize components and plugins in the nop environment. 2 | 2017/7/31 16:37:32|1|Inform|1 init plugin LCL.Repositories.EntityFramework 3 | 2017/7/31 16:38:43|1|Inform|LCL Initialize components and plugins in the nop environment. 4 | 2017/7/31 16:38:49|1|Inform|1 init plugin LCL.Repositories.EntityFramework 5 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Log/Info20170717.log: -------------------------------------------------------------------------------- 1 | 2017/7/17 16:50:50|1|Inform|LCL Initialize components and plugins in the nop environment. 2 | 2017/7/17 16:50:52|1|Inform|1 init plugin LCL.Repositories.EntityFramework 3 | 2017/7/17 16:51:58|11|Inform|LCL Initialize components and plugins in the nop environment. 4 | 2017/7/17 16:51:59|11|Inform|1 init plugin LCL.Repositories.EntityFramework 5 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Log/Info20170718.log: -------------------------------------------------------------------------------- 1 | 2017/7/18 17:27:27|1|Inform|LCL Initialize components and plugins in the nop environment. 2 | 2017/7/18 17:27:29|1|Inform|1 init plugin LCL.Repositories.EntityFramework 3 | 2017/7/18 17:31:08|1|Inform|LCL Initialize components and plugins in the nop environment. 4 | 2017/7/18 17:31:10|1|Inform|1 init plugin LCL.Repositories.EntityFramework 5 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/ICategoryRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Repositories; 3 | using LCL.Tests.Domain.Model; 4 | 5 | namespace LCL.Tests.Domain.Repositories 6 | { 7 | /// 8 | /// 表示用于“商品分类”聚合根的仓储接口。 9 | /// 10 | public interface ICategoryRepository : IRepository 11 | { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/IRoleRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Repositories; 3 | using LCL.Tests.Domain.Model; 4 | 5 | namespace LCL.Tests.Domain.Repositories 6 | { 7 | /// 8 | /// 表示用于“角色”聚合根的仓储接口。 9 | /// 10 | public interface IRoleRepository : IRepository 11 | { 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/Mvc/Template/TemplateServiceProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace LCL.Web.Template 8 | { 9 | /// 10 | /// 模板服务提供者。 11 | /// 12 | public delegate ITemplateService TemplateServiceProvider(); 13 | } 14 | -------------------------------------------------------------------------------- /Source/src/LCL/Events/Bus/IEventBus.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Events; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace LCL.Bus 9 | { 10 | /// 11 | /// 事件总线 12 | /// 13 | public interface IEventBus : IBus 14 | { 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Source/src/LCL/Events/IEventHandler.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace LCL.Domain.Events 3 | { 4 | public interface IEventHandler 5 | { 6 | 7 | } 8 | 9 | /// 10 | /// 事件处理 11 | /// 12 | /// 要处理的事件类型 13 | public interface IEventHandler : IHandler where TEvent : class, IEvent 14 | { 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /LCLDemo/DeleteBin.bat: -------------------------------------------------------------------------------- 1 | @for /r . %%I in (debug) do if exist "%%I" rd/s/q "%%I" 2 | @for /r . %%I in (bin) do if exist "%%I" rd/s/q "%%I" 3 | @for /r . %%I in (obj) do if exist "%%I" rd/s/q "%%I" 4 | @for /r . %%I in (clientbin) do if exist "%%I" rd/s/q "%%I" 5 | @for /r . %%I in (TestResults) do if exist "%%I" rd/s/q "%%I" 6 | del /s/q/f *.user 7 | del /s/q/f *.suo 8 | del /s/q/f *.vspscc 9 | rd /s/q .vs 10 | 11 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Services/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | LCL WCF Service 6 | 7 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Events/IDomainEventHandler.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Domain.Events 2 | { 3 | /// 4 | /// 表示领域事件的事件处理程序。 5 | /// 6 | /// 由当前处理程序处理的域事件的类型。 7 | public interface IDomainEventHandler : IEventHandler 8 | where TDomainEvent : class, IDomainEvent 9 | { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Source/src/LCL/GuidGenerator/RegularGuidGenerator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace LCL 4 | { 5 | /// 6 | /// Implements by using . 7 | /// 8 | public class RegularGuidGenerator : IGuidGenerator 9 | { 10 | public virtual Guid Create() 11 | { 12 | return Guid.NewGuid(); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Source/src/LCL.Web/Mvc/ViewEngines/IPluginViewEngine.cs: -------------------------------------------------------------------------------- 1 | using LCL.Plugins; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Web.Mvc; 7 | 8 | namespace LCL.Web.Mvc.ViewEngines 9 | { 10 | public interface IPluginViewEngine : IViewEngine 11 | { 12 | IPlugin Bundle { get; } 13 | string SymbolicName { get; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/PermissionKeys.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace LCL 8 | { 9 | [Flags] 10 | public enum PermissionKeys 11 | { 12 | None = 0, 13 | Customers = 1, 14 | SalesReps = 2, 15 | Buyers = 4, 16 | Administrators = 8 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/Content/Site.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 50px; 3 | padding-bottom: 20px; 4 | } 5 | 6 | /* Set padding to keep content from hitting the edges */ 7 | .body-content { 8 | padding-left: 15px; 9 | padding-right: 15px; 10 | } 11 | 12 | /* Set width on the form input elements since they're 100% wide by default */ 13 | input, 14 | select, 15 | textarea { 16 | max-width: 280px; 17 | } 18 | 19 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Entities/LocaleStringResource.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace LCL.Domain.Entities 8 | { 9 | public partial class LocaleStringResource : Entity 10 | { 11 | public string ResourceName { get; set; } 12 | public string ResourceValue { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/Configuration/LclMvcConfigurationExtensions.cs: -------------------------------------------------------------------------------- 1 | using LCL.Config.Startup; 2 | 3 | namespace LCL.Web.Configuration 4 | { 5 | public static class LclMvcConfigurationExtensions 6 | { 7 | public static ILclMvcConfiguration LclMvc(this IModuleConfigurations configurations) 8 | { 9 | return configurations.LclConfiguration.Get(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Entities/EntityExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Domain.Entities 2 | { 3 | public static class EntityExtensions 4 | { 5 | public static bool IsNullOrDeleted(this ISoftDelete entity) 6 | { 7 | return entity == null || entity.IsDeleted; 8 | } 9 | public static void UnDelete(this ISoftDelete entity) 10 | { 11 | entity.IsDeleted = false; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Source/src/LCL.RedisCache/IRedisCacheSerializer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using StackExchange.Redis; 7 | 8 | namespace LCL.Caching.Redis 9 | { 10 | public interface IRedisCacheSerializer 11 | { 12 | object Deserialize(RedisValue objbyte); 13 | 14 | string Serialize(object value, Type type); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/Localization/ILocalizedModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace LCL.Web.Localization 4 | { 5 | public interface ILocalizedModel 6 | { 7 | 8 | } 9 | public interface ILocalizedModel : ILocalizedModel 10 | { 11 | #region Data Members (1) 12 | 13 | IList Locales { get; set; } 14 | 15 | #endregion Data Members 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Entities/IAggregateRoot.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace LCL.Domain.Entities 8 | { 9 | public interface IAggregateRoot : IAggregateRoot, IEntity 10 | { 11 | 12 | } 13 | public interface IAggregateRoot : IEntity 14 | { 15 | 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Entities/IEntity.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace LCL.Domain.Entities 8 | { 9 | public interface IEntity : IEntity 10 | { 11 | 12 | } 13 | public interface IEntity 14 | { 15 | TPrimaryKey ID { get; set; } 16 | bool IsTransient(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Specifications/AnySpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq.Expressions; 3 | 4 | namespace LCL.Domain.Specifications 5 | { 6 | public sealed class AnySpecification : Specification 7 | { 8 | #region Public Methods 9 | public override Expression> GetExpression() 10 | { 11 | return o => true; 12 | } 13 | #endregion 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Specifications/NoneSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq.Expressions; 3 | 4 | namespace LCL.Domain.Specifications 5 | { 6 | public sealed class NoneSpecification : Specification 7 | { 8 | #region Public Methods 9 | public override Expression> GetExpression() 10 | { 11 | return o => false; 12 | } 13 | #endregion 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain.Repositories/EntityFramework/CategoryRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Repositories; 3 | using LCL.Repositories.EntityFramework; 4 | using LCL.Domain.Model; 5 | 6 | namespace LCL.Domain.Repositories.EntityFramework 7 | { 8 | public class CategoryRepository : EntityFrameworkRepository, ICategoryRepository 9 | { 10 | public CategoryRepository(IRepositoryContext context) : base(context) { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/MongoDB/CategoryRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using LCL.Domain.Repositories; 4 | using LCL.Repositories.MongoDB; 5 | using LCL.Tests.Domain.Model; 6 | 7 | namespace LCL.Tests.Domain.Repositories.MongoDB 8 | { 9 | public class CategoryRepository : MongoDBRepository, ICategoryRepository 10 | { 11 | public CategoryRepository(IRepositoryContext context) : base(context) { } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/TestsBase.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | using LCL; 4 | using LCL.Infrastructure; 5 | 6 | namespace LCL.Tests 7 | { 8 | [TestClass] 9 | public class TestsBase 10 | { 11 | [TestInitialize] 12 | public virtual void SetUp() 13 | { 14 | //initialize engine context 15 | EngineContext.Initialize(false); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Source/src/_Items/SharedAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using System.Resources; 4 | using System.Runtime.InteropServices; 5 | 6 | [assembly: AssemblyCompany("LCL Corporation")] 7 | [assembly: AssemblyCopyright("© LCL Corporation. All rights reserved.")] 8 | [assembly: CLSCompliant(true)] 9 | [assembly: ComVisible(false)] 10 | [assembly: NeutralResourcesLanguage("zh-CHS")] 11 | [assembly: AssemblyProduct("LCL Framework NET 4.6")] 12 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/MongoDB/RoleRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using LCL.Domain.Repositories; 4 | using LCL.Repositories.MongoDB; 5 | using LCL.Tests.Domain.Model; 6 | namespace LCL.Tests.Domain.Repositories.MongoDB 7 | { 8 | public class RoleRepository : MongoDBRepository, IRoleRepository 9 | { 10 | public RoleRepository(IRepositoryContext context) 11 | : base(context) 12 | { } 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/Fakes/Extensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Web; 3 | 4 | namespace LCL.Web.Fakes 5 | { 6 | public static class Extensions 7 | { 8 | public static bool IsFakeContext(this HttpContextBase httpContext) 9 | { 10 | if (httpContext == null) 11 | throw new ArgumentNullException("httpContext"); 12 | 13 | return httpContext is FakeHttpContext; 14 | } 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/Mvc/Routes/IRoutePublisher.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Routing; 2 | 3 | namespace LCL.Web.Mvc.Routes 4 | { 5 | /// 6 | /// Route publisher 7 | /// 8 | public interface IRoutePublisher 9 | { 10 | /// 11 | /// Register routes 12 | /// 13 | /// Routes 14 | void RegisterRoutes(RouteCollection routeCollection); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.EntityFramework/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Repositories/IRepositoryContext.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Uow; 2 | using System; 3 | 4 | namespace LCL.Domain.Repositories 5 | { 6 | /// 7 | /// 仓储上下文 8 | /// 9 | public interface IRepositoryContext : IUnitOfWork, IDisposable 10 | { 11 | Guid ID { get; } 12 | void RegisterNew(object obj); 13 | void RegisterModified(object obj); 14 | void RegisterDeleted(object obj); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain.Repositories/EntityFramework/RoleRepository.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Repositories; 2 | using LCL.Repositories.EntityFramework; 3 | using LCL.Domain.Model; 4 | using LCL; 5 | 6 | namespace LCL.Domain.Repositories.EntityFramework 7 | { 8 | public class RoleRepository : EntityFrameworkRepository, IRoleRepository 9 | { 10 | public RoleRepository(IRepositoryContext context) 11 | : base(context) 12 | { } 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/EntityFramework/CategoryRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Repositories; 3 | using LCL.Repositories.EntityFramework; 4 | using LCL.Tests.Domain.Model; 5 | 6 | namespace LCL.Tests.Domain.Repositories.EntityFramework 7 | { 8 | public class CategoryRepository : EntityFrameworkRepository, ICategoryRepository 9 | { 10 | public CategoryRepository(IRepositoryContext context) : base(context) { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Source/src/LCL/Caching/CachingMethod.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace LCL.Caching 3 | { 4 | /// 5 | /// 表示用于Caching特性的缓存方式。 6 | /// 7 | public enum CachingMethod 8 | { 9 | /// 10 | /// 表示需要从缓存中获取对象。如果缓存中不存在所需的对象,系统则会调用实际的方法获取对象, 11 | /// 然后将获得的结果添加到缓存中。 12 | /// 13 | Get, 14 | /// 15 | /// 表示需要将对象从缓存中移除。 16 | /// 17 | Remove 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/Utility/ApplySchemaVendorFilter.cs: -------------------------------------------------------------------------------- 1 | using Swashbuckle.Swagger; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Web; 6 | 7 | namespace LCL.WebAPI.Utility 8 | { 9 | public class ApplySchemaVendorFilter : ISchemaFilter 10 | { 11 | public void Apply(Schema schema, SchemaRegistry schemaRegistry, Type type) 12 | { 13 | schema.vendorExtensions.Add("x-schema", "bar"); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /Source/DeleteBin.bat: -------------------------------------------------------------------------------- 1 | @for /r . %%I in (debug) do if exist "%%I" rd/s/q "%%I" 2 | @for /r . %%I in (bin) do if exist "%%I" rd/s/q "%%I" 3 | @for /r . %%I in (obj) do if exist "%%I" rd/s/q "%%I" 4 | @for /r . %%I in (clientbin) do if exist "%%I" rd/s/q "%%I" 5 | @for /r . %%I in (TestResults) do if exist "%%I" rd/s/q "%%I" 6 | @for /r . %%I in (Presentation/LCL.Web/Plugins/) do if exist "%%I" rd/s/q "%%I" 7 | del /s/q/f *.user 8 | del /s/q/f *.suo 9 | del /s/q/f *.vspscc 10 | rd /s/q .vs 11 | 12 | -------------------------------------------------------------------------------- /Source/src/LCL/Infrastructure/DependencyManagement/DependencyRegisterAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace LCL.Infrastructure.DependencyManagement 8 | { 9 | /// 10 | /// http://blog.csdn.net/allenwdj/article/details/52623074 11 | /// 12 | public class DependencyRegisterAttribute : Attribute 13 | { 14 | 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/Security/SslRequirement.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Web.Security 2 | { 3 | public enum SslRequirement 4 | { 5 | /// 6 | /// Page should be secured 7 | /// 8 | Yes, 9 | /// 10 | /// Page should not be secured 11 | /// 12 | No, 13 | /// 14 | /// It doesn't matter (as requested) 15 | /// 16 | NoMatter, 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Web.BootstrapMvc/CustomDictionary.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Unstyled 8 | Blockquote 9 | 10 | 11 | 12 | 13 | 14 | 15 | Mvc 16 | 17 | 18 | -------------------------------------------------------------------------------- /Source/StyleCop.Cache: -------------------------------------------------------------------------------- 1 | 2 | 12 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Web.BootstrapMvc/Enums/Forms.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Web.BootstrapMvc.Enums 2 | { 3 | /// 4 | /// Defines the available menu-form types 5 | /// 6 | public enum MenuFormType 7 | { 8 | Default, 9 | MenuSearchForm 10 | } 11 | 12 | /// 13 | /// Defines the different horizontal alignment 14 | /// 15 | public enum HorizontalAlignment 16 | { 17 | Left, 18 | Right 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.MongoDB/IMongoDBRepositoryContext.cs: -------------------------------------------------------------------------------- 1 | 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using MongoDB.Driver; 7 | using LCL.Domain.Repositories; 8 | 9 | namespace LCL.Repositories.MongoDB 10 | { 11 | public interface IMongoDBRepositoryContext : IRepositoryContext 12 | { 13 | IMongoDBRepositoryContextSettings Settings { get; } 14 | MongoCollection GetCollectionForType(Type type); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/Domain/Services/ServicesTest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | using LCL.Tests.ACore.Domain.Services; 4 | 5 | namespace LCL.Tests.Domain.Services 6 | { 7 | [TestClass] 8 | public class ServicesTest : TestsBase 9 | { 10 | [TestMethod] 11 | public void TestMethod1() 12 | { 13 | var server= RF.Service(); 14 | server.Confirm(Guid.Empty); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/src/LCL/Events/HandlesAsynchronouslyAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace LCL.Domain.Events 7 | { 8 | /// 9 | /// 表示应用该属性的事件处理程序将处理异步流程中的事件。 10 | /// 此属性仅适用于消息处理程序被消息总线或消息调度程序使用。 11 | /// 12 | [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] 13 | public class HandlesAsynchronouslyAttribute : Attribute 14 | { 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Code/UrlHelperExtension.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Mvc; 2 | 3 | namespace System.Web.Mvc 4 | { 5 | public static class UrlHelperExtension 6 | { 7 | public static string GetProductImagePath(UrlHelper helper) 8 | { 9 | return helper.Content("~/Images/Products/"); 10 | } 11 | 12 | public static MvcHtmlString ProductImagePath(this UrlHelper helper) 13 | { 14 | return MvcHtmlString.Create(GetProductImagePath(helper)); 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /Source/src/LCL.Web/Mvc/Models/EasyUIGridModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace System.Web.Mvc 8 | { 9 | public class EasyUIGridModel 10 | { 11 | public EasyUIGridModel() 12 | { 13 | total = 0; 14 | rows = new List(); 15 | } 16 | public int total { get; set; } 17 | public List rows { get; set; } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Log/Info20170719.log: -------------------------------------------------------------------------------- 1 | 2017/7/19 16:25:56|1|Inform|LCL Initialize components and plugins in the nop environment. 2 | 2017/7/19 16:25:58|1|Inform|1 init plugin LCL.Repositories.EntityFramework 3 | 2017/7/19 16:33:17|1|Inform|LCL Initialize components and plugins in the nop environment. 4 | 2017/7/19 16:33:19|1|Inform|1 init plugin LCL.Repositories.EntityFramework 5 | 2017/7/19 16:39:58|1|Inform|LCL Initialize components and plugins in the nop environment. 6 | 2017/7/19 16:40:00|1|Inform|1 init plugin LCL.Repositories.EntityFramework 7 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Views/Admin/Administration.cshtml: -------------------------------------------------------------------------------- 1 | 2 | @{ 3 | ViewBag.Title = "站点管理"; 4 | } 5 |
6 |
7 |

发邮件给我们:minguiluo@163.com

8 |
9 |
10 |
11 |
12 |

@Html.Image("Admin_32.png") @ViewBag.Title

13 |

欢迎使用管理系统。请使用菜单栏目选择管理任务,对系统进行管理和设置。

14 |
15 |
16 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/EntityFramework/RoleRepository.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Repositories; 2 | using LCL.Repositories.EntityFramework; 3 | using LCL.Tests.Domain.Model; 4 | using LCL.Tests.Domain.Repositories; 5 | 6 | namespace LCL.Tests.Domain.Repositories.EntityFramework 7 | { 8 | public class RoleRepository : EntityFrameworkRepository, IRoleRepository 9 | { 10 | public RoleRepository(IRepositoryContext context) 11 | : base(context) 12 | { } 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Source/src/LCL.AutoMapper/AutoMapAttributeBase.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | using System; 3 | 4 | namespace LCL.AutoMapper 5 | { 6 | public abstract class AutoMapAttributeBase : Attribute 7 | { 8 | public Type[] TargetTypes { get; private set; } 9 | 10 | protected AutoMapAttributeBase(params Type[] targetTypes) 11 | { 12 | TargetTypes = targetTypes; 13 | } 14 | 15 | public abstract void CreateMap(IMapperConfigurationExpression configuration, Type type); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/src/LCL/Transactions/SuppressedTransactionCoordinator.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Uow; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace LCL.Transactions 9 | { 10 | internal sealed class SuppressedTransactionCoordinator : TransactionCoordinator 11 | { 12 | public SuppressedTransactionCoordinator(params IUnitOfWork[] unitOfWorks) 13 | : base(unitOfWorks) 14 | { 15 | } 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Model/ViewModels/ShoppingCartModels.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Model; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Web; 6 | 7 | namespace LCL.Domain.Model.ViewModels 8 | { 9 | public class ShoppingCartModels 10 | { 11 | public ShoppingCartModels() 12 | { 13 | Items = new List(); 14 | } 15 | public List Items { get; set; } 16 | 17 | public decimal Subtotal { get; set; } 18 | } 19 | } -------------------------------------------------------------------------------- /Source/src/LCL/Caching/ICacheProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace LCL.Caching 4 | { 5 | /// 6 | /// 表示实现该接口的类型是能够为应用程序提供缓存机制的类型。 7 | /// 8 | public interface ICacheProvider 9 | { 10 | #region Methods 11 | object GetOrDefault(string key); 12 | T Get(string key); 13 | void Set(string key, object data, int cacheTime); 14 | bool Exists(string key); 15 | void Remove(string key); 16 | void Clear(); 17 | #endregion 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/src/LCL/WriteLockDisposable.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | 4 | namespace LCL 5 | { 6 | public class WriteLockDisposable : IDisposable 7 | { 8 | private readonly ReaderWriterLockSlim _rwLock; 9 | public WriteLockDisposable(ReaderWriterLockSlim rwLock) 10 | { 11 | _rwLock = rwLock; 12 | _rwLock.EnterWriteLock(); 13 | } 14 | 15 | void IDisposable.Dispose() 16 | { 17 | _rwLock.ExitWriteLock(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/ReadMe.txt: -------------------------------------------------------------------------------- 1 | ASP.NET Domain-Driven Design 2 | AND 3 | RESTful API 设计最佳实践 4 | 5 | 6 | GET /member # 获取ticket列表 7 | GET /member/12 # 查看某个具体的ticket 8 | GET /member?id=1&username=admin&sort=&order=desc&page=1&rows=10 9 | 10 | POST /member //member添加操作 11 | PUT /member/1 //对member下id为1的资源进行修改操作:完全替换 12 | PATCH /member/1 //对member下id为1的资源进行修改操作:局部更新 13 | DELETE /member/1 //对member下id为1的资源进行删除操作 14 | 15 | 16 | 17 | api 18 | api/v1/{area}/{controller}/{id} 19 | api/v1/{area}/{category}/{controller}/{id} -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/Views/Home/Contact.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "Contact"; 3 | } 4 |

@ViewBag.Title.

5 |

@ViewBag.Message

6 | 7 |
8 | One Microsoft Way
9 | Redmond, WA 98052-6399
10 | P: 11 | 425.555.0100 12 |
13 | 14 |
15 | Support: Support@example.com
16 | Marketing: Marketing@example.com 17 |
-------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Models/AccountModels.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace LCL.WebMvc.Models 4 | { 5 | public class LoginModel 6 | { 7 | [Required] 8 | [Display(Name = "用户名")] 9 | public string UserName { get; set; } 10 | 11 | [Required] 12 | [DataType(DataType.Password)] 13 | [Display(Name = "密码")] 14 | public string Password { get; set; } 15 | 16 | [Display(Name = "记住密码?")] 17 | public bool RememberMe { get; set; } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/.nuget/pushNupkg.bat: -------------------------------------------------------------------------------- 1 | nuget pack ..\src\LCL.Web\LCL.Web.csproj 2 | 3 | nuget pack ..\src\LCL\LCL.csproj 4 | nuget pack ..\src\LCL.Repositories.EntityFramework\LCL.Repositories.EntityFramework.csproj 5 | nuget pack ..\src\LCL.Repositories.MongoDB\LCL.Repositories.MongoDB.csproj 6 | nuget pack ..\src\LCL.Repositories.NHibernate\LCL.Repositories.NHibernate.csproj 7 | nuget pack ..\src\LCL.Repositories.MyBatis\LCL.Repositories.MyBatis.csproj 8 | nuget pack ..\src\LCL.RedisCache\LCL.RedisCache.csproj 9 | nuget pack ..\src\LCL.AutoMapper\LCL.AutoMapper.csproj 10 | 11 | pause -------------------------------------------------------------------------------- /Source/src/LCL.Web/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Source/src/LCL/Events/IEvent.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Entities; 2 | using System; 3 | 4 | namespace LCL.Domain.Events 5 | { 6 | /// 7 | /// 表示实现该接口的类型为事件类型。 8 | /// 9 | public interface IEvent:IEntity 10 | { 11 | #region Properties 12 | /// 13 | /// 获取产生事件的时间戳。 14 | /// 15 | /// 为了支持事件产生时间的一致性,通常事件时间戳都是以UTC的方式进行表述。 16 | /// 对于应用系统本身而言,可以根据具体需求将UTC时间转换为本地时间。 17 | DateTime TimeStamp { get; } 18 | #endregion 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Specifications/ISpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq.Expressions; 3 | 4 | namespace LCL.Domain.Specifications 5 | { 6 | public interface ISpecification 7 | { 8 | Guid ID { get; } 9 | bool IsSatisfiedBy(T obj); 10 | ISpecification And(ISpecification other); 11 | ISpecification Or(ISpecification other); 12 | ISpecification AndNot(ISpecification other); 13 | ISpecification Not(); 14 | Expression> GetExpression(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Source/src/LCL/Events/Bus/IBus.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Events; 2 | using LCL.Domain.Uow; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace LCL.Bus 10 | { 11 | public interface IBus : IUnitOfWork, IDisposable 12 | { 13 | Guid ID { get; } 14 | void Publish(TMessage message) where TMessage : class, IEvent; 15 | void Publish(IEnumerable messages) where TMessage : class, IEvent; 16 | void Clear(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Specifications/UserStringEqualsSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using LCL.Domain.Model; 6 | using LCL.Domain.Specifications; 7 | 8 | namespace LCL.Domain.Repositories.Specifications 9 | { 10 | public abstract class UserStringEqualsSpecification : Specification 11 | { 12 | protected readonly string value; 13 | 14 | public UserStringEqualsSpecification(string value) 15 | { 16 | this.value = value; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Events/GetUserOrdersEvent.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Entities; 3 | using LCL.Domain.Events; 4 | using LCL.Domain.Model; 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | 11 | namespace LCL.Domain.Events 12 | { 13 | [Serializable] 14 | public class GetUserOrdersEvent : DomainEvent 15 | { 16 | public GetUserOrdersEvent(IEntity source) : base(source) { } 17 | 18 | public IEnumerable SalesOrders { get; set; } 19 | 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Source/src/LCL/Config/Startup/LclStartupConfigurationExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace LCL.Config.Startup 8 | { 9 | public static class LclStartupConfigurationExtensions 10 | { 11 | public static void ReplaceService(this ILclStartupConfiguration configuration, Action replaceAction) 12 | where TType : class 13 | { 14 | configuration.ReplaceService(typeof(TType), replaceAction); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Views/Home/Contact.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "联系方式"; 3 | } 4 |
5 |
6 |

发邮件给我们:minguiluo@163.com

7 |
8 |
9 |
10 |

联系方式

11 |

您可以通过以下方式联系LCL Web Mvc示例项目的作者。

12 |
电子邮件:minguiluo@163.com
13 | 14 |
-------------------------------------------------------------------------------- /Source/src/LCL/Infrastructure/IEngine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using LCL.Infrastructure.DependencyManagement; 3 | using LCL.Config; 4 | 5 | namespace LCL.Infrastructure 6 | { 7 | /// 8 | /// IOC(引擎接口) 9 | /// 实现了这个接口的类可以作为门户的各种服务组合LCL引擎。 10 | /// 编辑功能,模块和实现访问通过LCL大部分功能接口。 11 | /// 12 | public interface IEngine 13 | { 14 | ContainerManager ContainerManager { get; } 15 | void Initialize(LConfig config); 16 | T Resolve() where T : class; 17 | object Resolve(Type type); 18 | T[] ResolveAll(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.EntityFramework/Mapping/Configuration/SettingMap.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Entities; 3 | using System.Data.Entity.ModelConfiguration; 4 | 5 | namespace LCL.Data.Mapping.Configuration 6 | { 7 | public partial class SettingMap : EntityTypeConfiguration 8 | { 9 | public SettingMap() 10 | { 11 | this.ToTable("Setting"); 12 | this.HasKey(s => s.ID); 13 | this.Property(s => s.Name).IsRequired().HasMaxLength(200); 14 | this.Property(s => s.Value).IsRequired().HasMaxLength(2000); 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /Source/src/LCL.AutoMapper/AutoMapperConfigurationExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using AutoMapper; 4 | 5 | namespace LCL.AutoMapper 6 | { 7 | internal static class AutoMapperConfigurationExtensions 8 | { 9 | public static void CreateAutoAttributeMaps(this IMapperConfigurationExpression configuration, Type type) 10 | { 11 | foreach (var autoMapAttribute in type.GetTypeInfo().GetCustomAttributes()) 12 | { 13 | autoMapAttribute.CreateMap(configuration, type); 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Events/GetUserOrdersEvent.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Entities; 3 | using LCL.Domain.Events; 4 | using LCL.Tests.Domain.Model; 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | 11 | namespace LCL.Tests.Domain.Events 12 | { 13 | [Serializable] 14 | public class GetUserOrdersEvent : DomainEvent 15 | { 16 | public GetUserOrdersEvent(IEntity source) : base(source) { } 17 | 18 | public IEnumerable SalesOrders { get; set; } 19 | 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Views/Product/Index.cshtml: -------------------------------------------------------------------------------- 1 | @using LCL; 2 | @{ 3 | ViewBag.Title = "商品" + ViewBag.CategoryName; 4 | } 5 |
6 |
7 | @{Html.RenderAction("FeaturedProductsPartial", "Layout");} 8 |
9 |
10 |
11 |
12 | @{Html.RenderAction("ProductsPartial", "Layout");} 13 |
14 | 17 |
18 |
-------------------------------------------------------------------------------- /Source/src/LCL.Repositories.MongoDB/EfStartUpTask.cs: -------------------------------------------------------------------------------- 1 | using LCL; 2 | using LCL.Infrastructure; 3 | using LCL.LData; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | 10 | namespace LCL.Repositories.MongoDB 11 | { 12 | public class EfStartUpTask : IStartupTask 13 | { 14 | public void Execute() 15 | { 16 | 17 | } 18 | 19 | public int Order 20 | { 21 | //ensure that this task is run first 22 | get { return -1000; } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/Specifications/UserStringEqualsSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using LCL.Tests.Domain.Model; 6 | using LCL.Domain.Specifications; 7 | 8 | namespace LCL.Tests.Domain.Repositories.Specifications 9 | { 10 | internal abstract class UserStringEqualsSpecification : Specification 11 | { 12 | protected readonly string value; 13 | 14 | public UserStringEqualsSpecification(string value) 15 | { 16 | this.value = value; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Services/Language/ILocalizationService.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Entities; 2 | using System; 3 | using System.Collections.Generic; 4 | namespace LCL.Domain.Services 5 | { 6 | public interface ILocalizationService 7 | { 8 | void DeleteLocaleStringResource(LocaleStringResource localeStringResource); 9 | string GetResource(string resourceKey); 10 | List GetStringResourceAll(); 11 | void InsertLocaleStringResource(LocaleStringResource localeStringResource); 12 | void UpdateLocaleStringResource(LocaleStringResource localeStringResource); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Repositories/IShoppingCartRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Repositories; 3 | using LCL.Domain.Model; 4 | 5 | namespace LCL.Domain.Repositories 6 | { 7 | /// 8 | /// 表示用于“购物篮”聚合根的仓储接口。 9 | /// 10 | public interface IShoppingCartRepository : IRepository 11 | { 12 | #region 13 | /// 14 | /// 根据指定的用户,查找该用户的购物篮。 15 | /// 16 | /// 用户。 17 | /// 购物篮。 18 | ShoppingCart FindShoppingCartByUser(User user); 19 | 20 | #endregion 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Specifications/OrSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq.Expressions; 3 | 4 | namespace LCL.Domain.Specifications 5 | { 6 | public class OrSpecification : CompositeSpecification 7 | { 8 | #region Ctor 9 | public OrSpecification(ISpecification left, ISpecification right) : base(left, right) { } 10 | #endregion 11 | 12 | #region Public Methods 13 | public override Expression> GetExpression() 14 | { 15 | return Left.GetExpression().Or(Right.GetExpression()); 16 | } 17 | #endregion 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/src/LCL/Infrastructure/DependencyManagement/IDependencyRegistrar.cs: -------------------------------------------------------------------------------- 1 | using Autofac; 2 | 3 | namespace LCL.Infrastructure.DependencyManagement 4 | { 5 | /// 6 | /// 容器注册类 7 | /// 8 | public interface IDependencyRegistrar 9 | { 10 | /// 11 | /// 注册ICO 12 | /// 13 | /// 14 | /// 15 | void Register(ContainerBuilder builder, ITypeFinder typeFinder); 16 | /// 17 | /// 排序 18 | /// 19 | int Order { get; } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Events/IDomainEvent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Threading.Tasks; 4 | using System.Xml.Serialization; 5 | using System.Linq; 6 | using System.Runtime.Serialization; 7 | using LCL.Domain.Entities; 8 | using LCL.Infrastructure; 9 | 10 | namespace LCL.Domain.Events 11 | { 12 | /// 13 | /// 领域事件 14 | /// 15 | /// 领域事件是领域模型所引发的事件。 16 | public interface IDomainEvent : IEvent 17 | { 18 | /// 19 | /// 获取或设置生成域事件的源实体。 20 | /// 21 | IEntity Source { get; } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Specifications/AndSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq.Expressions; 3 | 4 | namespace LCL.Domain.Specifications 5 | { 6 | public class AndSpecification : CompositeSpecification 7 | { 8 | #region Ctor 9 | public AndSpecification(ISpecification left, ISpecification right) : base(left, right) { } 10 | #endregion 11 | 12 | #region Public Methods 13 | public override Expression> GetExpression() 14 | { 15 | return Left.GetExpression().And(Right.GetExpression()); 16 | } 17 | #endregion 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Model/ValidationModel/Role.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace LCL.Domain.Model.ValidationModel 9 | { 10 | [Serializable] 11 | [MetadataType(typeof(RoleMD))] 12 | public partial class Role 13 | { 14 | public class RoleMD 15 | { 16 | [Display(Name = "名称")] 17 | public string Name { get; set; } 18 | [Display(Name = "描述")] 19 | public string Description { get; set; } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/IShoppingCartRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Repositories; 3 | using LCL.Tests.Domain.Model; 4 | 5 | namespace LCL.Tests.Domain.Repositories 6 | { 7 | /// 8 | /// 表示用于“购物篮”聚合根的仓储接口。 9 | /// 10 | public interface IShoppingCartRepository : IRepository 11 | { 12 | #region 13 | /// 14 | /// 根据指定的用户,查找该用户的购物篮。 15 | /// 16 | /// 用户。 17 | /// 购物篮。 18 | ShoppingCart FindShoppingCartByUser(User user); 19 | #endregion 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.MongoDB/IMongoDBRepositoryContextSettings.cs: -------------------------------------------------------------------------------- 1 | 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using MongoDB.Driver; 7 | 8 | namespace LCL.Repositories.MongoDB 9 | { 10 | 11 | public delegate string MapTypeToCollectionNameDelegate(Type type); 12 | 13 | public interface IMongoDBRepositoryContextSettings 14 | { 15 | string DatabaseName { get; } 16 | MongoServerSettings ServerSettings { get; } 17 | MongoDatabaseSettings GetDatabaseSettings(MongoServer server); 18 | MapTypeToCollectionNameDelegate MapTypeToCollectionName { get; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Specifications/UserEmailEqualsSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using LCL.Domain.Model; 6 | using LCL.Domain.Specifications; 7 | 8 | namespace LCL.Domain.Repositories.Specifications 9 | { 10 | public class UserEmailEqualsSpecification : UserStringEqualsSpecification 11 | { 12 | public UserEmailEqualsSpecification(string email) 13 | : base(email) 14 | { } 15 | 16 | public override System.Linq.Expressions.Expression> GetExpression() 17 | { 18 | return c => c.Email == value; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain.Repositories/EntityFramework/ModelConfigurations/ShoppingCartTypeConfiguration.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Model; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | using System.Data.Entity.ModelConfiguration; 4 | 5 | namespace LCL.Domain.Repositories.EntityFramework.ModelConfigurations 6 | { 7 | public class ShoppingCartTypeConfiguration : EntityTypeConfiguration 8 | { 9 | public ShoppingCartTypeConfiguration() 10 | { 11 | HasKey(c => c.ID); 12 | Property(c => c.ID) 13 | .IsRequired() 14 | .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Web.BootstrapMvc/ReadMe.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Source/src/LCL/Threading/IObservableActions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace LCL.Threading 4 | { 5 | /// 6 | /// 任意开始,最后结束 7 | /// 8 | public interface IObservableActions 9 | { 10 | /// 11 | /// 第一个异步任务开始执行时 12 | /// 13 | event EventHandler FirstActionStarted; 14 | 15 | /// 16 | /// 最后一个异步任务执行完毕后 17 | /// 18 | event EventHandler LastActionEnded; 19 | 20 | /// 21 | /// 调用此方法时,任务直接进入调度队列中 22 | /// 23 | /// 24 | void Execute(Action action); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Web.BootstrapMvc/Enums/Images.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Web.BootstrapMvc.Enums 2 | { 3 | /// 4 | /// Defines the different types of image style. 5 | /// 6 | public enum ImageType 7 | { 8 | /// 9 | /// Rounded image Type 10 | /// 11 | Rounded, 12 | /// 13 | /// Polaroid image Type 14 | /// 15 | Polaroid, 16 | /// 17 | /// Circle image type 18 | /// 19 | Circle, 20 | /// 21 | /// Comment image type 22 | /// 23 | Comment 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.EntityFramework/Initializers/AutoMigrationsConfiguration.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Data.Entity.Migrations; 7 | 8 | namespace LCL.Repositories.EntityFramework 9 | { 10 | /// 11 | /// 自动迁移设置 12 | /// 13 | public class AutoMigrationsConfiguration : DbMigrationsConfiguration 14 | { 15 | public AutoMigrationsConfiguration() 16 | { 17 | AutomaticMigrationsEnabled = true;//自动迁移 18 | AutomaticMigrationDataLossAllowed = true;//允许数据丢失 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Source/common.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 2.1.0-rc1 4 | $(NoWarn);CS1591 5 | http://files.cnblogs.com/files/luomingui/0128.gif 6 | https://github.com/luomingui/LCLFramework 7 | https://github.com/luomingui/LCLFramework/blob/master/LICENSE 8 | git 9 | https://github.com/luomingui/LCLFramework 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Specifications/UserNameEqualsSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using LCL.Domain.Model; 6 | using LCL.Domain.Specifications; 7 | 8 | namespace LCL.Domain.Repositories.Specifications 9 | { 10 | public class UserNameEqualsSpecification : UserStringEqualsSpecification 11 | { 12 | public UserNameEqualsSpecification(string userName) 13 | : base(userName) 14 | { 15 | 16 | } 17 | 18 | public override System.Linq.Expressions.Expression> GetExpression() 19 | { 20 | return c => c.UserName == value; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Web.BootstrapMvc/Enums/Menus.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Web.BootstrapMvc.Enums 2 | { 3 | /// 4 | /// Defines the different types of menu. 5 | /// 6 | public enum MenuType 7 | { 8 | /// 9 | /// Basic navbar menu 10 | /// 11 | Basic, 12 | /// 13 | /// Navbar menu fixed to the top 14 | /// 15 | FixedTop, 16 | /// 17 | /// Navbar menu fixed to the botton 18 | /// 19 | FixedBottom, 20 | /// 21 | /// Full-width top navbar 22 | /// 23 | StaticTop 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Entities/AggregateRoot.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Reflection; 4 | using LCL; 5 | 6 | namespace LCL.Domain.Entities 7 | { 8 | /// 9 | /// 聚合根 唯一类型是Guid 10 | /// 11 | [Serializable] 12 | public abstract class AggregateRoot : AggregateRoot, IAggregateRoot 13 | { 14 | 15 | } 16 | /// 17 | /// 聚合根 18 | /// 19 | /// 自定义唯一类型 20 | [Serializable] 21 | public abstract class AggregateRoot : Entity, IAggregateRoot 22 | { 23 | 24 | } 25 | 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Repositories/IProductRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Repositories; 3 | using LCL.Domain.Model; 4 | using System; 5 | using System.Collections.Generic; 6 | 7 | namespace LCL.Domain.Repositories 8 | { 9 | /// 10 | /// 表示用于“商品”聚合根的仓储接口。 11 | /// 12 | public interface IProductRepository : IRepository 13 | { 14 | #region Methods 15 | /// 16 | /// 获取特色商品的列表。 17 | /// 18 | /// 需要获取的特色商品的个数。默认值:0,表示获取所有特色商品。 19 | /// 特色商品列表。 20 | IEnumerable GetFeaturedProducts(int count = 0); 21 | #endregion 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Repositories/IUserRoleRepository.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Repositories; 2 | using LCL.Domain.Model; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | 8 | namespace LCL.Domain.Repositories 9 | { 10 | /// 11 | /// 表示用于“用户角色关系”聚合根的仓储接口。 12 | /// 13 | public interface IUserRoleRepository : IRepository 14 | { 15 | #region Methods 16 | /// 17 | /// 根据指定的用户,获取该用户所属的角色。 18 | /// 19 | /// 用户。 20 | /// 角色。 21 | Role GetRoleForUser(User user); 22 | #endregion 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/Fakes/TypeFindingBase.cs: -------------------------------------------------------------------------------- 1 | using LCL.Infrastructure; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace LCL.Tests 10 | { 11 | public abstract class TypeFindingBase : TestsBase 12 | { 13 | protected ITypeFinder typeFinder; 14 | 15 | protected abstract Type[] GetTypes(); 16 | 17 | [TestInitialize] 18 | public override void SetUp() 19 | { 20 | base.SetUp(); 21 | typeFinder = new FakeTypeFinder(typeof(TypeFindingBase).Assembly, GetTypes()); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Source/src/LCL.RedisCache/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Specifications/UserPasswordEqualsSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using LCL.Domain.Model; 6 | using LCL.Domain.Specifications; 7 | 8 | namespace LCL.Domain.Repositories.Specifications 9 | { 10 | public class UserPasswordEqualsSpecification : UserStringEqualsSpecification 11 | { 12 | 13 | public UserPasswordEqualsSpecification(string password) 14 | : base(password) 15 | { 16 | } 17 | 18 | public override System.Linq.Expressions.Expression> GetExpression() 19 | { 20 | return c => c.Password == value; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/EntityFramework/ModelConfigurations/ShoppingCartTypeConfiguration.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Tests.Domain.Model; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using System.Data.Entity.ModelConfiguration; 5 | 6 | namespace LCL.Tests.Domain.Repositories.EntityFramework.ModelConfigurations 7 | { 8 | public class ShoppingCartTypeConfiguration : EntityTypeConfiguration 9 | { 10 | public ShoppingCartTypeConfiguration() 11 | { 12 | HasKey(c => c.ID); 13 | Property(c => c.ID) 14 | .IsRequired() 15 | .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/Mvc/Models/PagedListViewModel.cs: -------------------------------------------------------------------------------- 1 | using LCL; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Web; 6 | 7 | namespace System.Web.Mvc 8 | { 9 | /// 10 | /// 视图模型 分页帮助类 11 | /// 12 | /// The type of the model. 13 | public class PagedListViewModel : PagedResult 14 | { 15 | public const int DefaultPageSize = 10; 16 | public string WhereStr { get; set; } 17 | public PagedListViewModel(int currentPageNum, int pageSize, List allModels) 18 | : base(currentPageNum, pageSize, allModels) 19 | { 20 | 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/Specifications/UserEmailEqualsSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using LCL.Tests.Domain.Model; 6 | using LCL.Domain.Specifications; 7 | 8 | namespace LCL.Tests.Domain.Repositories.Specifications 9 | { 10 | internal class UserEmailEqualsSpecification : UserStringEqualsSpecification 11 | { 12 | public UserEmailEqualsSpecification(string email) 13 | : base(email) 14 | { } 15 | 16 | public override System.Linq.Expressions.Expression> GetExpression() 17 | { 18 | return c => c.Email == value; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Views/Product/Category.cshtml: -------------------------------------------------------------------------------- 1 | @using LCL; 2 | @{ 3 | ViewBag.Title = "商品" + ViewBag.CategoryName; 4 | } 5 |
6 |
7 | @{Html.RenderAction("FeaturedProductsPartial", "Layout");} 8 |
9 |
10 |
11 |
12 | @{Html.RenderAction("ProductsPartial", "Layout", 13 | new { categoryID = ViewData["CategoryID"], fromIndexPage = ViewData["FromIndexPage"] });} 14 | 15 |
16 | 19 |
20 |
-------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/IProductRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Repositories; 3 | using LCL.Tests.Domain.Model; 4 | using System; 5 | using System.Collections.Generic; 6 | 7 | namespace LCL.Tests.Domain.Repositories 8 | { 9 | /// 10 | /// 表示用于“商品”聚合根的仓储接口。 11 | /// 12 | public interface IProductRepository : IRepository 13 | { 14 | #region Methods 15 | /// 16 | /// 获取特色商品的列表。 17 | /// 18 | /// 需要获取的特色商品的个数。默认值:0,表示获取所有特色商品。 19 | /// 特色商品列表。 20 | IEnumerable GetFeaturedProducts(int count = 0); 21 | #endregion 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/IUserRoleRepository.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Repositories; 2 | using LCL.Tests.Domain.Model; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | 8 | namespace LCL.Tests.Domain.Repositories 9 | { 10 | /// 11 | /// 表示用于“用户角色关系”聚合根的仓储接口。 12 | /// 13 | public interface IUserRoleRepository : IRepository 14 | { 15 | #region Methods 16 | /// 17 | /// 根据指定的用户,获取该用户所属的角色。 18 | /// 19 | /// 用户。 20 | /// 角色。 21 | Role GetRoleForUser(User user); 22 | #endregion 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/Fakes/FakePrincipal.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Security.Principal; 3 | 4 | namespace LCL.Web.Fakes 5 | { 6 | public class FakePrincipal : IPrincipal 7 | { 8 | private readonly IIdentity _identity; 9 | private readonly string[] _roles; 10 | 11 | public FakePrincipal(IIdentity identity, string[] roles) 12 | { 13 | _identity = identity; 14 | _roles = roles; 15 | } 16 | 17 | 18 | public IIdentity Identity 19 | { 20 | get { return _identity; } 21 | } 22 | 23 | public bool IsInRole(string role) 24 | { 25 | return _roles != null && _roles.Contains(role); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Specifications/UserRolesSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Linq.Expressions; 6 | using LCL.Domain.Model; 7 | using LCL.Domain.Specifications; 8 | 9 | namespace LCL.Domain.Repositories.Specifications 10 | { 11 | public class UserRolesSpecification : Specification 12 | { 13 | private readonly Guid userID; 14 | 15 | public UserRolesSpecification(User user) 16 | { 17 | this.userID = user.ID; 18 | } 19 | 20 | public override Expression> GetExpression() 21 | { 22 | return p => p.UserID == userID; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Views/Shared/CategoriesPartial.cshtml: -------------------------------------------------------------------------------- 1 | @using LCL; 2 | @{ 3 | ViewBag.Title = "商品" + ViewBag.CategoryName; 4 | } 5 |

商 品 分 类

6 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Repositories/xml/IXMLRepositoryContext.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Entities; 2 | using LCL.Domain.Repositories; 3 | using LCL.Domain.Specifications; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.IO; 7 | using System.Linq; 8 | using System.Linq.Expressions; 9 | using System.Text; 10 | using System.Threading.Tasks; 11 | using System.Xml; 12 | using System.Xml.Linq; 13 | 14 | namespace LCL.Repositories.XML 15 | { 16 | public interface IXMLRepositoryContext : IRepositoryContext 17 | { 18 | XDocument Context { get; } 19 | string XmlFileSavePath { get; } 20 | IQueryable GetModel() where TAggregateRoot : class, IAggregateRoot; 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/Specifications/UserNameEqualsSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using LCL.Tests.Domain.Model; 6 | using LCL.Domain.Specifications; 7 | 8 | namespace LCL.Tests.Domain.Repositories.Specifications 9 | { 10 | internal class UserNameEqualsSpecification : UserStringEqualsSpecification 11 | { 12 | public UserNameEqualsSpecification(string userName) 13 | : base(userName) 14 | { 15 | 16 | } 17 | 18 | public override System.Linq.Expressions.Expression> GetExpression() 19 | { 20 | return c => c.UserName == value; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/Fakes/FakeIdentity.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Security.Principal; 3 | 4 | namespace LCL.Web.Fakes 5 | { 6 | public class FakeIdentity : IIdentity 7 | { 8 | private readonly string _name; 9 | 10 | public FakeIdentity(string userName) 11 | { 12 | _name = userName; 13 | } 14 | 15 | public string AuthenticationType 16 | { 17 | get { throw new NotImplementedException(); } 18 | } 19 | 20 | public bool IsAuthenticated 21 | { 22 | get { return !String.IsNullOrEmpty(_name); } 23 | } 24 | 25 | public string Name 26 | { 27 | get { return _name; } 28 | } 29 | 30 | } 31 | } -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Services/IPostbackService.cs: -------------------------------------------------------------------------------- 1 | using LCL.ServiceModel; 2 | using System.ServiceModel; 3 | 4 | namespace LCL.Domain.Services 5 | { 6 | /// 7 | /// 表示与“服务器信息回发”相关的应用层服务契约。 8 | /// 9 | [ServiceContract(Namespace = "http://www.ByteartRetail.com")] 10 | public interface IPostbackService : IApplicationServiceContract 11 | { 12 | #region Methods 13 | /// 14 | /// 将服务器相关的信息回发给客户端。 15 | /// 16 | /// 服务器相关信息。 17 | /// 此服务仅用于测试,没有实际业务含义。 18 | //[OperationContract] 19 | //[FaultContract(typeof(FaultData))] 20 | //PostbackDataObject GetPostback(); 21 | #endregion 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/Domain/Events/Bus/BusTest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | using System.Threading; 4 | using LCL.Tests; 5 | using LCL; 6 | using LCL.Bus; 7 | using LCL.Domain.Services; 8 | using LCL.Tests.ACore; 9 | using LCL.Tests.Domain.Events; 10 | 11 | namespace LCL.Tests.Events.Bus 12 | { 13 | [TestClass] 14 | public class BusTest : TestsBase 15 | { 16 | 17 | [TestMethod] 18 | public void Should_Call_Action_On_Event_With_Correct_Source() 19 | { 20 | 21 | RF.Service().Publish(new OrderDispatchedEvent()); 22 | 23 | RF.Service().Commit(); 24 | 25 | } 26 | 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /Source/src/LCL.RedisCache/DependencyRegistrar.cs: -------------------------------------------------------------------------------- 1 | using Autofac; 2 | using LCL.Domain.Services; 3 | using LCL.Infrastructure; 4 | using LCL.Infrastructure.DependencyManagement; 5 | 6 | namespace LCL.Caching.Redis 7 | { 8 | public class DependencyRegistrar : IDependencyRegistrar 9 | { 10 | public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder) 11 | { 12 | //cache manager 13 | builder.RegisterType().As().Named("lcl_cache_redis").SingleInstance(); 14 | Logger.LogInfo(Order + " init plugin LCL.Caching.Redis"); 15 | } 16 | 17 | public int Order 18 | { 19 | get { return -1; } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/Specifications/UserPasswordEqualsSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using LCL.Tests.Domain.Model; 6 | using LCL.Domain.Specifications; 7 | 8 | namespace LCL.Tests.Domain.Repositories.Specifications 9 | { 10 | internal class UserPasswordEqualsSpecification : UserStringEqualsSpecification 11 | { 12 | 13 | public UserPasswordEqualsSpecification(string password) 14 | : base(password) 15 | { 16 | } 17 | 18 | public override System.Linq.Expressions.Expression> GetExpression() 19 | { 20 | return c => c.Password == value; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/Controllers/HomeController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Mvc; 6 | 7 | namespace LCL.WebAPI.Controllers 8 | { 9 | public class HomeController : Controller 10 | { 11 | // GET: Home 12 | public ActionResult Index() 13 | { 14 | return View(); 15 | } 16 | public ActionResult About() 17 | { 18 | ViewBag.Message = "Your application description page."; 19 | 20 | return View(); 21 | } 22 | 23 | public ActionResult Contact() 24 | { 25 | ViewBag.Message = "Your contact page."; 26 | 27 | return View(); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Specifications/SalesOrderBelongsToUserSpecification.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Specifications; 2 | using LCL.Domain.Model; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | 8 | namespace LCL.Domain.Repositories.Specifications 9 | { 10 | public class SalesOrderBelongsToUserSpecification : Specification 11 | { 12 | private readonly User user; 13 | 14 | public SalesOrderBelongsToUserSpecification(User user) 15 | { 16 | this.user = user; 17 | } 18 | 19 | public override System.Linq.Expressions.Expression> GetExpression() 20 | { 21 | return so => so.User.ID == user.ID; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Specifications/SalesOrderIDEqualsSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | using LCL.Domain.Model; 7 | using LCL.Domain.Specifications; 8 | 9 | 10 | namespace LCL.Domain.Repositories.Specifications 11 | { 12 | public class SalesOrderIDEqualsSpecification : Specification 13 | { 14 | private readonly Guid orderID; 15 | 16 | public SalesOrderIDEqualsSpecification(Guid orderID) 17 | { 18 | this.orderID = orderID; 19 | } 20 | 21 | public override System.Linq.Expressions.Expression> GetExpression() 22 | { 23 | return p => p.ID == orderID; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Source/src/LCL.AutoMapper/AutoMapperObjectMapper.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | using IObjectMapper = LCL.ObjectMapping.IObjectMapper; 3 | 4 | 5 | namespace LCL.AutoMapper 6 | { 7 | public class AutoMapperObjectMapper : IObjectMapper 8 | { 9 | private readonly IMapper _mapper; 10 | 11 | public AutoMapperObjectMapper(IMapper mapper) 12 | { 13 | _mapper = mapper; 14 | } 15 | 16 | public TDestination Map(object source) 17 | { 18 | return _mapper.Map(source); 19 | } 20 | 21 | public TDestination Map(TSource source, TDestination destination) 22 | { 23 | return _mapper.Map(source, destination); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/Specifications/UserRolesSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Linq.Expressions; 6 | using LCL.Tests.Domain.Model; 7 | using LCL.Domain.Specifications; 8 | 9 | namespace LCL.Tests.Domain.Repositories.Specifications 10 | { 11 | public class UserRolesSpecification : Specification 12 | { 13 | private readonly Guid userID; 14 | 15 | public UserRolesSpecification(User user) 16 | { 17 | this.userID = user.ID; 18 | } 19 | 20 | public override Expression> GetExpression() 21 | { 22 | return p => p.UserID == userID; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Source/src/LCL/Transactions/TransactionCoordinatorFactory.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Uow; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace LCL.Transactions 9 | { 10 | public static class TransactionCoordinatorFactory 11 | { 12 | public static ITransactionCoordinator Create(params IUnitOfWork[] args) 13 | { 14 | bool ret = true; 15 | foreach (var arg in args) 16 | ret = ret && arg.DistributedTransactionSupported; 17 | if (ret) 18 | return new DistributedTransactionCoordinator(args); 19 | else 20 | return new SuppressedTransactionCoordinator(args); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Source/src/_Items/SharedAssemblyVersionInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Resources; 3 | 4 | // 程序集的版本信息由下面四个值组成: 5 | // 6 | // 主版本 7 | // 次版本 8 | // 内部版本号 9 | // 修订号 10 | // 11 | // 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, 12 | // 方法是按如下所示使用“*”: 13 | [assembly: AssemblyVersion("7.0.0.0")] 14 | [assembly: AssemblyFileVersion("7.0.0.0")] 15 | [assembly: AssemblyInformationalVersion("7.0.0-alpha1")] 16 | [assembly: SatelliteContractVersion("7.0.0.0")] 17 | 18 | /******************************************************* 19 | * 20 | * 创建时间:20130826 21 | * 说明:本文件用于记录 LCL 框架版本号及相应的变更记录。格式如下: 22 | * 暂时分为以下几类: 23 | * ★较大改动、添加接口、★修改接口、★删除接口、添加功能、重构、内部修改、BUG修改。 24 | * 25 | *******************************************************/ 26 | 27 | /* 28 | 29 | 30 | */ -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain.Repositories/EntityFramework/ModelConfigurations/RoleTypeConfiguration.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Model; 2 | using System; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using System.Data.Entity.ModelConfiguration; 5 | 6 | namespace LCL.Domain.Repositories.EntityFramework.ModelConfigurations 7 | { 8 | public class RoleTypeConfiguration : EntityTypeConfiguration 9 | { 10 | public RoleTypeConfiguration() 11 | { 12 | HasKey(c => c.ID); 13 | Property(c => c.ID) 14 | .IsRequired() 15 | .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 16 | Property(c => c.Name) 17 | .IsRequired() 18 | .HasMaxLength(25); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain.Repositories/EntityFramework/ModelConfigurations/SalesOrderTypeConfiguration.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.Data.Entity.ModelConfiguration; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | using LCL.Domain.Model; 6 | 7 | namespace LCL.Domain.Repositories.EntityFramework.ModelConfigurations 8 | { 9 | public class SalesOrderTypeConfiguration : EntityTypeConfiguration 10 | { 11 | public SalesOrderTypeConfiguration() 12 | { 13 | HasKey(s => s.ID); 14 | Property(s => s.ID) 15 | .IsRequired() 16 | .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 17 | Ignore(p => p.Subtotal); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain.Repositories/EntityFramework/ModelConfigurations/ShoppingCartItemTypeConfiguration.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using System.Data.Entity.ModelConfiguration; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using LCL.Domain.Model; 5 | 6 | namespace LCL.Domain.Repositories.EntityFramework.ModelConfigurations 7 | { 8 | public class ShoppingCartItemTypeConfiguration : EntityTypeConfiguration 9 | { 10 | public ShoppingCartItemTypeConfiguration() 11 | { 12 | HasKey(c => c.ID); 13 | Property(c => c.ID) 14 | .IsRequired() 15 | .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 16 | Ignore(p => p.LineAmount); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/Mvc/ViewEngines/IPluginViewEngineFactory.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using LCL.Plugins; 4 | namespace LCL.Web.Mvc.ViewEngines 5 | { 6 | public interface IPluginViewEngineFactory 7 | { 8 | IPluginViewEngine CreateViewEngine(IPlugin bundle); 9 | } 10 | 11 | public class PluginRazorViewEngineFactory : IPluginViewEngineFactory 12 | { 13 | public IPluginViewEngine CreateViewEngine(IPlugin bundle) 14 | { 15 | return new PluginRazorViewEngine(bundle); 16 | } 17 | } 18 | 19 | public class PluginWebFormViewEngineFactory : IPluginViewEngineFactory 20 | { 21 | public IPluginViewEngine CreateViewEngine(IPlugin bundle) 22 | { 23 | return new PluginWebFormViewEngine(bundle); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Specifications/ExpressionSpecification.cs: -------------------------------------------------------------------------------- 1 | 2 | using System; 3 | using System.Linq.Expressions; 4 | 5 | namespace LCL.Domain.Specifications 6 | { 7 | public sealed class ExpressionSpecification : Specification 8 | { 9 | #region Private Fields 10 | private Expression> expression; 11 | #endregion 12 | 13 | #region Ctor 14 | public ExpressionSpecification(Expression> expression) 15 | { 16 | this.expression = expression; 17 | } 18 | #endregion 19 | 20 | #region Public Methods 21 | public override Expression> GetExpression() 22 | { 23 | return this.expression; 24 | } 25 | #endregion 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Specifications/ShoppingCartBelongsToCustomerSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using LCL.Domain.Model; 6 | using LCL.Domain.Specifications; 7 | 8 | namespace LCL.Domain.Repositories.Specifications 9 | { 10 | public class ShoppingCartBelongsToCustomerSpecification : Specification 11 | { 12 | private readonly User user; 13 | 14 | 15 | public ShoppingCartBelongsToCustomerSpecification(User user) 16 | { 17 | this.user = user; 18 | } 19 | 20 | public override System.Linq.Expressions.Expression> GetExpression() 21 | { 22 | return c => c.User.ID == user.ID; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Content/Site.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 0px; 3 | padding-bottom: 0px; 4 | position: relative; 5 | } 6 | .navbar { 7 | margin-bottom: 0px; 8 | } 9 | /* Set padding to keep content from hitting the edges */ 10 | .body-content { 11 | padding-left: 15px; 12 | padding-right: 15px; 13 | } 14 | 15 | /* Override the default bootstrap behavior where horizontal description lists 16 | will truncate terms that are too long to fit in the left column 17 | */ 18 | .dl-horizontal dt { 19 | white-space: normal; 20 | } 21 | 22 | /* Set width on the form input elements since they're 100% wide by default */ 23 | input, 24 | select, 25 | textarea { 26 | max-width: 280px; 27 | } 28 | 29 | .active { 30 | text-decoration: none; 31 | background-color: #eeeeee; 32 | } -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Services/DomainService.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Application; 3 | using LCL.Bus; 4 | using LCL.Domain.Entities; 5 | using LCL.Domain.Repositories; 6 | using System; 7 | using System.Collections.Generic; 8 | 9 | namespace LCL.Domain.Services 10 | { 11 | /// 12 | /// 表示用于领域模型中的领域服务类型。 13 | /// 14 | public partial class DomainService : ApplicationService, IDomainService 15 | { 16 | 17 | #region Ctor 18 | /// 19 | /// 初始化一个新的DomainService类型的实例。 20 | /// 21 | /// 仓储上下文。 22 | public DomainService(IRepositoryContext context, IEventBus bus):base(context,bus) 23 | { 24 | 25 | } 26 | #endregion 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Source/src/LCL/Config/Startup/IModuleConfigurations.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace LCL.Config.Startup 8 | { 9 | public interface IModuleConfigurations 10 | { 11 | /// 12 | /// Gets the ABP configuration object. 13 | /// 14 | ILclStartupConfiguration LclConfiguration { get; } 15 | } 16 | internal class ModuleConfigurations : IModuleConfigurations 17 | { 18 | public ILclStartupConfiguration LclConfiguration { get; private set; } 19 | 20 | public ModuleConfigurations(ILclStartupConfiguration lclConfiguration) 21 | { 22 | LclConfiguration = lclConfiguration; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Source/src/LCL/Serialization/SerializationException.cs: -------------------------------------------------------------------------------- 1 | using LCL; 2 | using System; 3 | using System.Runtime.InteropServices; 4 | 5 | namespace LCL.Serialization 6 | { 7 | [Serializable] 8 | [ComVisible(true)] 9 | [ClassInterface(ClassInterfaceType.None)] 10 | [ComDefaultInterface(typeof(_Exception))] 11 | public class SerializationException : LException 12 | { 13 | #region Ctor 14 | public SerializationException() : base() { } 15 | public SerializationException(string message) : base(message) { } 16 | public SerializationException(string message, Exception innerException) : base(message, innerException) { } 17 | public SerializationException(string format, params object[] args) : base(string.Format(format, args)) { } 18 | #endregion 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Events/OrderConfirmedEvent.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Entities; 2 | using LCL.Domain.Events; 3 | using System; 4 | 5 | namespace LCL.Domain.Events 6 | { 7 | /// 8 | /// 表示订单确认的领域事件。 9 | /// 10 | [Serializable] 11 | public class OrderConfirmedEvent : DomainEvent 12 | { 13 | #region Ctor 14 | public OrderConfirmedEvent() { } 15 | public OrderConfirmedEvent(IEntity source) : base(source) { } 16 | #endregion 17 | 18 | #region Public Properties 19 | /// 20 | /// 获取或设置订单确认的日期。 21 | /// 22 | public DateTime ConfirmedDate { get; set; } 23 | public string UserEmailAddress { get; set; } 24 | public Guid OrderID { get; set; } 25 | #endregion 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/Specifications/SalesOrderBelongsToUserSpecification.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Specifications; 2 | using LCL.Tests.Domain.Model; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | 8 | namespace LCL.Tests.Domain.Repositories.Specifications 9 | { 10 | internal class SalesOrderBelongsToUserSpecification : Specification 11 | { 12 | private readonly User user; 13 | 14 | public SalesOrderBelongsToUserSpecification(User user) 15 | { 16 | this.user = user; 17 | } 18 | 19 | public override System.Linq.Expressions.Expression> GetExpression() 20 | { 21 | return so => so.User.ID == user.ID; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/Specifications/SalesOrderIDEqualsSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | using LCL.Tests.Domain.Model; 7 | using LCL.Domain.Specifications; 8 | 9 | 10 | namespace LCL.Tests.Domain.Repositories.Specifications 11 | { 12 | public class SalesOrderIDEqualsSpecification : Specification 13 | { 14 | private readonly Guid orderID; 15 | 16 | public SalesOrderIDEqualsSpecification(Guid orderID) 17 | { 18 | this.orderID = orderID; 19 | } 20 | 21 | public override System.Linq.Expressions.Expression> GetExpression() 22 | { 23 | return p => p.ID == orderID; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/EntityFramework/ModelConfigurations/SalesOrderTypeConfiguration.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.Data.Entity.ModelConfiguration; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | using LCL.Tests.Domain.Model; 6 | 7 | namespace LCL.Tests.Domain.Repositories.EntityFramework.ModelConfigurations 8 | { 9 | public class SalesOrderTypeConfiguration : EntityTypeConfiguration 10 | { 11 | public SalesOrderTypeConfiguration() 12 | { 13 | HasKey(s => s.ID); 14 | Property(s => s.ID) 15 | .IsRequired() 16 | .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 17 | Ignore(p => p.Subtotal); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/EntityFramework/ModelConfigurations/ShoppingCartItemTypeConfiguration.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using System.Data.Entity.ModelConfiguration; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using LCL.Tests.Domain.Model; 5 | 6 | namespace LCL.Tests.Domain.Repositories.EntityFramework.ModelConfigurations 7 | { 8 | public class ShoppingCartItemTypeConfiguration : EntityTypeConfiguration 9 | { 10 | public ShoppingCartItemTypeConfiguration() 11 | { 12 | HasKey(c => c.ID); 13 | Property(c => c.ID) 14 | .IsRequired() 15 | .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 16 | Ignore(p => p.LineAmount); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Specifications/SpecificationException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | 4 | namespace LCL.Domain.Specifications 5 | { 6 | [Serializable] 7 | [ComVisible(true)] 8 | [ClassInterface(ClassInterfaceType.None)] 9 | [ComDefaultInterface(typeof(_Exception))] 10 | public class SpecificationException : LException 11 | { 12 | #region Ctor 13 | public SpecificationException() : base() { } 14 | public SpecificationException(string message) : base(message) { } 15 | public SpecificationException(string message, Exception innerException) : base(message, innerException) { } 16 | public SpecificationException(string format, params object[] args) : base(string.Format(format, args)) { } 17 | #endregion 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Specifications/ShoppingCartItemHasProductSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using LCL.Domain.Model; 6 | using LCL.Domain.Specifications; 7 | 8 | namespace LCL.Domain.Repositories.Specifications 9 | { 10 | internal class ShoppingCartItemHasProductSpecification : Specification 11 | { 12 | 13 | private readonly Product product; 14 | 15 | public ShoppingCartItemHasProductSpecification(Product product) 16 | { 17 | this.product = product; 18 | } 19 | 20 | public override System.Linq.Expressions.Expression> GetExpression() 21 | { 22 | return p => p.Product.ID == product.ID; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebAPI/Properties/PublishProfiles/CustomProfile.pubxml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | FileSystem 9 | Release 10 | Any CPU 11 | 12 | True 13 | False 14 | D:\PublishSoftware\LCL7\API 15 | False 16 | 17 | -------------------------------------------------------------------------------- /LCLDemo/LCL.WebMvc/Properties/PublishProfiles/CustomProfile.pubxml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | FileSystem 9 | Release 10 | Any CPU 11 | 12 | True 13 | False 14 | D:\PublishSoftware\LCL7\MVC 15 | False 16 | 17 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Services/Properties/PublishProfiles/CustomProfile.pubxml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | FileSystem 9 | Release 10 | Any CPU 11 | 12 | True 13 | False 14 | D:\PublishSoftware\LCL7\WCF 15 | False 16 | 17 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/MongoDB/ShoppingCartRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Repositories; 3 | using LCL.Repositories.MongoDB; 4 | using LCL.Tests.Domain.Model; 5 | using LCL.Tests.Domain.Repositories.Specifications; 6 | namespace LCL.Tests.Domain.Repositories.MongoDB 7 | { 8 | public class ShoppingCartRepository : MongoDBRepository, IShoppingCartRepository 9 | { 10 | public ShoppingCartRepository(IRepositoryContext context) 11 | : base(context) 12 | { 13 | 14 | } 15 | 16 | #region IShoppingCartRepository Members 17 | 18 | public ShoppingCart FindShoppingCartByUser(User user) 19 | { 20 | return Find(new ShoppingCartBelongsToCustomerSpecification(user)); 21 | } 22 | 23 | #endregion 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Events/OrderDispatchedEvent.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Entities; 2 | using LCL.Domain.Events; 3 | using System; 4 | 5 | namespace LCL.Domain.Events 6 | { 7 | /// 8 | /// 表示当针对某销售订单进行发货时所产生的领域事件。 9 | /// 10 | [Serializable] 11 | public class OrderDispatchedEvent : DomainEvent 12 | { 13 | #region Ctor 14 | public OrderDispatchedEvent() { } 15 | public OrderDispatchedEvent(IEntity source) : base(source) { } 16 | #endregion 17 | 18 | #region Public Properties 19 | /// 20 | /// 获取或设置订单发货的日期。 21 | /// 22 | public DateTime DispatchedDate { get; set; } 23 | public string UserEmailAddress { get; set; } 24 | public Guid OrderID { get; set; } 25 | #endregion 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Specifications/AndNotSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq.Expressions; 3 | 4 | namespace LCL.Domain.Specifications 5 | { 6 | public class AndNotSpecification : CompositeSpecification 7 | { 8 | #region Ctor 9 | public AndNotSpecification(ISpecification left, ISpecification right) : base(left, right) { } 10 | #endregion 11 | 12 | #region Public Methods 13 | public override Expression> GetExpression() 14 | { 15 | var bodyNot = Expression.Not(Right.GetExpression().Body); 16 | var bodyNotExpression = Expression.Lambda>(bodyNot, Right.GetExpression().Parameters); 17 | 18 | return Left.GetExpression().And(bodyNotExpression); 19 | } 20 | #endregion 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Events/OrderConfirmedEvent.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Entities; 2 | using LCL.Domain.Events; 3 | using System; 4 | 5 | namespace LCL.Tests.Domain.Events 6 | { 7 | /// 8 | /// 表示订单确认的领域事件。 9 | /// 10 | [Serializable] 11 | public class OrderConfirmedEvent : DomainEvent 12 | { 13 | #region Ctor 14 | public OrderConfirmedEvent() { } 15 | public OrderConfirmedEvent(IEntity source) : base(source) { } 16 | #endregion 17 | 18 | #region Public Properties 19 | /// 20 | /// 获取或设置订单确认的日期。 21 | /// 22 | public DateTime ConfirmedDate { get; set; } 23 | public string UserEmailAddress { get; set; } 24 | public Guid OrderID { get; set; } 25 | #endregion 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/Specifications/ShoppingCartBelongsToCustomerSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using LCL.Tests.Domain.Model; 6 | using LCL.Domain.Specifications; 7 | 8 | namespace LCL.Tests.Domain.Repositories.Specifications 9 | { 10 | internal class ShoppingCartBelongsToCustomerSpecification : Specification 11 | { 12 | private readonly User user; 13 | 14 | 15 | public ShoppingCartBelongsToCustomerSpecification(User user) 16 | { 17 | this.user = user; 18 | } 19 | 20 | public override System.Linq.Expressions.Expression> GetExpression() 21 | { 22 | return c => c.User.ID == user.ID; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/Infrastructuretest/TypeFinderTests.cs: -------------------------------------------------------------------------------- 1 | using LCL.Infrastructure; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | using System.Linq; 4 | 5 | 6 | namespace LCL.Tests 7 | { 8 | [TestClass] 9 | public class TypeFinderTests 10 | { 11 | [TestMethod] 12 | public void TypeFinder_Benchmark_Findings() 13 | { 14 | var finder = new AppDomainTypeFinder(); 15 | 16 | var type = finder.FindClassesOfType(); 17 | type.Count().ShouldEqual(1); 18 | typeof(ISomeInterface).IsAssignableFrom(type.FirstOrDefault()).ShouldBeTrue(); 19 | } 20 | 21 | public interface ISomeInterface 22 | { 23 | } 24 | 25 | public class SomeClass : ISomeInterface 26 | { 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Source/src/LCL.Web/Mvc/Template/MemoryTemplateService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Web.Routing; 7 | 8 | namespace LCL.Web.Template 9 | { 10 | /// 11 | /// 基于内存的模板服务。 12 | /// 13 | public sealed class MemoryTemplateService : ITemplateService 14 | { 15 | private string _template = TemplateService.DefaultTemplateName; 16 | 17 | /// 18 | public string GetTemplate(RequestContext context) 19 | { 20 | return _template; 21 | } 22 | 23 | /// 24 | public void SetTemplate(RequestContext context, string template) 25 | { 26 | _template = template; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Source/src/LCL.AutoMapper/AutoMapAttribute.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | using System; 3 | 4 | namespace LCL.AutoMapper 5 | { 6 | public class AutoMapAttribute : AutoMapAttributeBase 7 | { 8 | public AutoMapAttribute(params Type[] targetTypes) 9 | : base(targetTypes) 10 | { 11 | 12 | } 13 | 14 | public override void CreateMap(IMapperConfigurationExpression configuration, Type type) 15 | { 16 | if (TargetTypes.IsNullOrEmpty()) 17 | { 18 | return; 19 | } 20 | 21 | foreach (var targetType in TargetTypes) 22 | { 23 | configuration.CreateMap(type, targetType, MemberList.Source); 24 | configuration.CreateMap(targetType, type, MemberList.Destination); 25 | } 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /Source/src/LCL/DisposableObject.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.ConstrainedExecution; 3 | 4 | namespace LCL 5 | { 6 | public abstract class DisposableObject : CriticalFinalizerObject, IDisposable 7 | { 8 | ~DisposableObject() 9 | { 10 | this.Dispose(false); 11 | } 12 | protected abstract void Dispose(bool disposing); 13 | public void Dispose() 14 | { 15 | this.Dispose(true); 16 | GC.SuppressFinalize(this); 17 | } 18 | } 19 | internal sealed class NullDisposable : IDisposable 20 | { 21 | public static NullDisposable Instance = new NullDisposable(); 22 | 23 | private NullDisposable() 24 | { 25 | 26 | } 27 | 28 | public void Dispose() 29 | { 30 | 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Events/OrderDispatchedEvent.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Entities; 2 | using LCL.Domain.Events; 3 | using System; 4 | 5 | namespace LCL.Tests.Domain.Events 6 | { 7 | /// 8 | /// 表示当针对某销售订单进行发货时所产生的领域事件。 9 | /// 10 | [Serializable] 11 | public class OrderDispatchedEvent : DomainEvent 12 | { 13 | #region Ctor 14 | public OrderDispatchedEvent() { } 15 | public OrderDispatchedEvent(IEntity source) : base(source) { } 16 | #endregion 17 | 18 | #region Public Properties 19 | /// 20 | /// 获取或设置订单发货的日期。 21 | /// 22 | public DateTime DispatchedDate { get; set; } 23 | public string UserEmailAddress { get; set; } 24 | public Guid OrderID { get; set; } 25 | #endregion 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/Specifications/ShoppingCartItemHasProductSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using LCL.Tests.Domain.Model; 6 | using LCL.Domain.Specifications; 7 | 8 | namespace LCL.Tests.Domain.Repositories.Specifications 9 | { 10 | internal class ShoppingCartItemHasProductSpecification : Specification 11 | { 12 | 13 | private readonly Product product; 14 | 15 | public ShoppingCartItemHasProductSpecification(Product product) 16 | { 17 | this.product = product; 18 | } 19 | 20 | public override System.Linq.Expressions.Expression> GetExpression() 21 | { 22 | return p => p.Product.ID == product.ID; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Source/src/LCL/Infrastructure/TypeFinder/ITypeFinder.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Reflection; 4 | 5 | namespace LCL.Infrastructure 6 | { 7 | /// 8 | /// 类型查找抽象接口 9 | /// 10 | public interface ITypeFinder 11 | { 12 | IList GetAssemblies(); 13 | 14 | Type[] Find(Func predicate); 15 | IEnumerable FindClassesOfType(Type assignTypeFrom, bool onlyConcreteClasses = true); 16 | 17 | IEnumerable FindClassesOfType(Type assignTypeFrom, IEnumerable assemblies, bool onlyConcreteClasses = true); 18 | 19 | IEnumerable FindClassesOfType(bool onlyConcreteClasses = true); 20 | 21 | IEnumerable FindClassesOfType(IEnumerable assemblies, bool onlyConcreteClasses = true); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Model/ShoppingCart.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Entities; 2 | using System; 3 | 4 | namespace LCL.Domain.Model 5 | { 6 | /// 7 | /// 表示“购物篮”的领域实体对象。 8 | /// 9 | public class ShoppingCart : AggregateRoot 10 | { 11 | #region Private Fields 12 | private User user; 13 | #endregion 14 | 15 | #region Ctor 16 | /// 17 | /// 初始化一个ShoppingCart类型的实例。 18 | /// 19 | public ShoppingCart() { } 20 | #endregion 21 | 22 | #region Public Properties 23 | /// 24 | /// 获取或设置拥有此购物篮的客户实体。 25 | /// 26 | public virtual User User 27 | { 28 | get { return user; } 29 | set { user = value; } 30 | } 31 | #endregion 32 | 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Specifications/NotSpecification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq.Expressions; 3 | 4 | namespace LCL.Domain.Specifications 5 | { 6 | public class NotSpecification : Specification 7 | { 8 | #region Private Fields 9 | private ISpecification spec; 10 | #endregion 11 | 12 | #region Ctor 13 | public NotSpecification(ISpecification specification) 14 | { 15 | this.spec = specification; 16 | } 17 | #endregion 18 | 19 | #region Public Methods 20 | public override Expression> GetExpression() 21 | { 22 | var body = Expression.Not(this.spec.GetExpression().Body); 23 | return Expression.Lambda>(body, this.spec.GetExpression().Parameters); 24 | } 25 | #endregion 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Source/src/LCL/Extensions/AssemblyExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Reflection; 3 | 4 | namespace Abp.Reflection.Extensions 5 | { 6 | public static class AssemblyExtensions 7 | { 8 | /// 9 | /// Gets directory path of given assembly or returns null if can not find. 10 | /// 11 | /// The assembly. 12 | public static string GetDirectoryPathOrNull(this Assembly assembly) 13 | { 14 | var location = assembly.Location; 15 | if (location == null) 16 | { 17 | return null; 18 | } 19 | 20 | var directory = new FileInfo(location).Directory; 21 | if (directory == null) 22 | { 23 | return null; 24 | } 25 | 26 | return directory.FullName; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Model/ShoppingCart.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Entities; 2 | using System; 3 | 4 | namespace LCL.Tests.Domain.Model 5 | { 6 | /// 7 | /// 表示“购物篮”的领域实体对象。 8 | /// 9 | public class ShoppingCart : AggregateRoot 10 | { 11 | #region Private Fields 12 | private User user; 13 | #endregion 14 | 15 | #region Ctor 16 | /// 17 | /// 初始化一个ShoppingCart类型的实例。 18 | /// 19 | public ShoppingCart() { } 20 | #endregion 21 | 22 | #region Public Properties 23 | /// 24 | /// 获取或设置拥有此购物篮的客户实体。 25 | /// 26 | public virtual User User 27 | { 28 | get { return user; } 29 | set { user = value; } 30 | } 31 | #endregion 32 | 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain.Repositories/EntityFramework/ModelConfigurations/SalesLineTypeConfiguration.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.Data.Entity.ModelConfiguration; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | using LCL.Domain.Model; 6 | 7 | 8 | namespace LCL.Domain.Repositories.EntityFramework.ModelConfigurations 9 | { 10 | public class SalesLineTypeConfiguration : EntityTypeConfiguration 11 | { 12 | public SalesLineTypeConfiguration() 13 | { 14 | HasKey(s => s.ID); 15 | Property(p => p.ID) 16 | .IsRequired() 17 | .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 18 | HasRequired(p => p.SalesOrder) 19 | .WithMany(p => p.SalesLines); 20 | Ignore(p => p.LineAmount); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Source/src/LCL/Threading/IParallelActions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace LCL.Threading 7 | { 8 | /// 9 | /// 这个只有准备好了任务后,再一起开始 10 | /// 11 | public interface IParallelActions 12 | { 13 | /// 14 | /// 可同时运行的最大线程数。 15 | /// 16 | int MaxThreadCount { get; set; } 17 | 18 | /// 19 | /// 准备需要执行的“非主任务” 20 | /// 21 | /// 22 | void Prepare(Action action); 23 | 24 | /// 25 | /// 把所有的action清空。 26 | /// 27 | void Clear(); 28 | 29 | /// 30 | /// 执行所有Action。 31 | /// 执行完毕,函数返回。 32 | /// 33 | void RunAll(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/EntityFramework/ShoppingCartRepository.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Repositories; 2 | using LCL.Repositories.EntityFramework; 3 | using LCL.Tests.Domain.Model; 4 | using LCL.Tests.Domain.Repositories; 5 | using LCL.Tests.Domain.Repositories.Specifications; 6 | 7 | namespace LCL.Tests.Domain.Repositories.EntityFramework 8 | { 9 | public class ShoppingCartRepository : EntityFrameworkRepository, IShoppingCartRepository 10 | { 11 | public ShoppingCartRepository(IRepositoryContext context) 12 | : base(context) 13 | { 14 | 15 | } 16 | 17 | #region IShoppingCartRepository Members 18 | 19 | public ShoppingCart FindShoppingCartByUser(User user) 20 | { 21 | return Find(new ShoppingCartBelongsToCustomerSpecification(user)); 22 | } 23 | 24 | #endregion 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Source/src/LCL/NamedTypeSelector.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace LCL 4 | { 5 | /// 6 | /// Used to represent a named type selector. 7 | /// 8 | public class NamedTypeSelector 9 | { 10 | /// 11 | /// Name of the selector. 12 | /// 13 | public string Name { get; set; } 14 | 15 | /// 16 | /// Predicate. 17 | /// 18 | public Func Predicate { get; set; } 19 | 20 | /// 21 | /// Creates new object. 22 | /// 23 | /// Name 24 | /// Predicate 25 | public NamedTypeSelector(string name, Func predicate) 26 | { 27 | Name = name; 28 | Predicate = predicate; 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /Source/src/LCL/ObjectMapping/NullObjectMapper.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace LCL.ObjectMapping 3 | { 4 | public sealed class NullObjectMapper : IObjectMapper 5 | { 6 | /// 7 | /// Singleton instance. 8 | /// 9 | public static NullObjectMapper Instance { get { return SingletonInstance; } } 10 | private static readonly NullObjectMapper SingletonInstance = new NullObjectMapper(); 11 | 12 | public TDestination Map(object source) 13 | { 14 | throw new LException("LCL.ObjectMapping.IObjectMapper should be implemented in order to map objects."); 15 | } 16 | 17 | public TDestination Map(TSource source, TDestination destination) 18 | { 19 | throw new LException("LCL.ObjectMapping.IObjectMapper should be implemented in order to map objects."); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Source/src/LCL/Plugins/BasePlugin.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Services; 2 | namespace LCL.Plugins 3 | { 4 | /// 5 | /// 实现IPlugin.cs的方法。 6 | /// 7 | public abstract class BasePlugin : IPlugin 8 | { 9 | protected BasePlugin() 10 | { 11 | } 12 | 13 | public virtual PluginDescriptor PluginDescriptor { get; set; } 14 | public virtual void Install() 15 | { 16 | PluginManager.MarkPluginAsInstalled(this.PluginDescriptor.SystemName); 17 | Logger.LogInfo("initialize " + this.PluginDescriptor.SystemName+" plugin "); 18 | } 19 | public virtual void Uninstall() 20 | { 21 | PluginManager.MarkPluginAsUninstalled(this.PluginDescriptor.SystemName); 22 | Logger.LogInfo("Uninstall " + this.PluginDescriptor.SystemName + " plugin "); 23 | } 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain.Repositories/EntityFramework/ShoppingCartRepository.cs: -------------------------------------------------------------------------------- 1 | using LCL.Domain.Repositories; 2 | using LCL.Repositories.EntityFramework; 3 | using LCL.Domain.Model; 4 | using LCL.Domain.Repositories.Specifications; 5 | using LCL; 6 | using System; 7 | using System.Collections.Generic; 8 | 9 | namespace LCL.Domain.Repositories.EntityFramework 10 | { 11 | public class ShoppingCartRepository : EntityFrameworkRepository, IShoppingCartRepository 12 | { 13 | public ShoppingCartRepository(IRepositoryContext context) 14 | : base(context) 15 | { 16 | 17 | } 18 | 19 | 20 | 21 | #region IShoppingCartRepository Members 22 | 23 | public ShoppingCart FindShoppingCartByUser(User user) 24 | { 25 | return Find(new ShoppingCartBelongsToCustomerSpecification(user)); 26 | } 27 | 28 | #endregion 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Source/Tests/LCL.Tests/ACore/Domain/Repositories/EntityFramework/ModelConfigurations/SalesLineTypeConfiguration.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.Data.Entity.ModelConfiguration; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | using LCL.Tests.Domain.Model; 6 | 7 | namespace LCL.Tests.Domain.Repositories.EntityFramework.ModelConfigurations 8 | { 9 | public class SalesLineTypeConfiguration : EntityTypeConfiguration 10 | { 11 | public SalesLineTypeConfiguration() 12 | { 13 | HasKey(s => s.ID); 14 | Property(p => p.ID) 15 | .IsRequired() 16 | .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 17 | HasRequired(p => p.SalesOrder) 18 | .WithMany(p => p.SalesLines); 19 | Ignore(p => p.LineAmount); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Source/src/LCL/Extensions/EnumExt.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Reflection; 5 | using System.Text; 6 | namespace LCL 7 | { 8 | /// 9 | /// 枚举扩展方法类 10 | /// 11 | public static class EnumExtensions 12 | { 13 | /// 14 | /// 获取枚举项的Description特性的描述文字 15 | /// 16 | /// 17 | /// 18 | public static string ToDescription(this Enum enumeration) 19 | { 20 | Type type = enumeration.GetType(); 21 | MemberInfo[] members = type.GetMember(enumeration.CastTo()); 22 | if (members.Length > 0) 23 | { 24 | return members[0].ToDescription(); 25 | } 26 | return enumeration.CastTo(); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Source/appveyor.yml: -------------------------------------------------------------------------------- 1 | configuration: Release 2 | version: 2.1.0-beta{build} 3 | image: Visual Studio 2017 4 | 5 | nuget: 6 | disable_publish_on_pr: true 7 | 8 | before_build: 9 | - cmd: set PATH=D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin;%PATH% 10 | - cmd: nuget install nuget.commandline -source https://dotnet.myget.org/F/nuget-build -prerelease -excludeversion 11 | - cmd: set PATH=%appveyor_build_folder%\NuGet.CommandLine\tools;%PATH% 12 | - cmd: dotnet.exe restore 13 | 14 | after_build: 15 | - ps: >- 16 | $versionSuffix=(Get-Item Env:APPVEYOR_BUILD_NUMBER).Value 17 | 18 | Set-Location "nupkg" 19 | 20 | .\pack.ps1 -versionSuffix "$versionSuffix" 21 | 22 | build: 23 | verbosity: minimal 24 | 25 | pull_requests: 26 | do_not_increment_build_number: true 27 | 28 | test: 29 | assemblies: 30 | - Tests\LCL.Tests\bin\Debug\LCL.Tests.dll 31 | 32 | artifacts: 33 | - path: nupkg\*.nupkg 34 | name: nuget-packages -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/Repositories/ISalesOrderRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Repositories; 3 | using LCL.Domain.Model; 4 | using System; 5 | using System.Collections.Generic; 6 | 7 | namespace LCL.Domain.Repositories 8 | { 9 | /// 10 | /// 表示用于“销售订单”聚合根的仓储接口。 11 | /// 12 | public interface ISalesOrderRepository : IRepository 13 | { 14 | #region Methods 15 | /// 16 | /// 查找属于指定用户的所有销售订单。 17 | /// 18 | /// 用户。 19 | /// 指定用户的所有销售订单。 20 | IEnumerable FindSalesOrdersByUser(User user); 21 | /// 22 | /// 根据销售订单的ID值获取销售订单。 23 | /// 24 | /// 销售订单的ID值。 25 | /// 销售订单。 26 | SalesOrder GetSalesOrderByID(Guid orderID); 27 | #endregion 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Source/src/LCL.Repositories.MongoDB/Conventions/GuidIDGeneratorConvention.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Entities; 3 | using MongoDB.Bson.Serialization; 4 | using MongoDB.Bson.Serialization.Conventions; 5 | using MongoDB.Bson.Serialization.IdGenerators; 6 | 7 | namespace LCL.Repositories.MongoDB.Conventions 8 | { 9 | public class GuidIDGeneratorConvention : IPostProcessingConvention 10 | { 11 | #region IPostProcessingConvention Members 12 | public void PostProcess(BsonClassMap classMap) 13 | { 14 | if (typeof(IEntity).IsAssignableFrom(classMap.ClassType) && classMap.IdMemberMap != null) 15 | classMap.IdMemberMap.SetIdGenerator(new GuidGenerator()); 16 | } 17 | 18 | #endregion 19 | 20 | #region IConvention Members 21 | public string Name 22 | { 23 | get { return this.GetType().Name; } 24 | } 25 | 26 | #endregion 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain.Repositories/EntityFramework/ModelConfigurations/CategoryTypeConfiguration.cs: -------------------------------------------------------------------------------- 1 | 2 | using LCL.Domain.Model; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.ComponentModel.DataAnnotations; 6 | using System.ComponentModel.DataAnnotations.Schema; 7 | using System.Data.Entity.ModelConfiguration; 8 | using System.Linq; 9 | using System.Text; 10 | 11 | namespace LCL.Domain.Repositories.EntityFramework.ModelConfigurations 12 | { 13 | public class CategoryTypeConfiguration : EntityTypeConfiguration 14 | { 15 | public CategoryTypeConfiguration() 16 | { 17 | HasKey(c => c.ID); 18 | Property(c => c.ID) 19 | .IsRequired() 20 | .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 21 | Property(c => c.Name) 22 | .IsRequired() 23 | .HasMaxLength(25); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Source/src/LCL/Domain/Specifications/CompositeSpecification.cs: -------------------------------------------------------------------------------- 1 | namespace LCL.Domain.Specifications 2 | { 3 | public abstract class CompositeSpecification : Specification, ICompositeSpecification 4 | { 5 | #region Private Fields 6 | private readonly ISpecification left; 7 | private readonly ISpecification right; 8 | #endregion 9 | 10 | #region Ctor 11 | public CompositeSpecification(ISpecification left, ISpecification right) 12 | { 13 | this.left = left; 14 | this.right = right; 15 | } 16 | #endregion 17 | 18 | #region ICompositeSpecification Members 19 | public ISpecification Left 20 | { 21 | get { return this.left; } 22 | } 23 | public ISpecification Right 24 | { 25 | get { return this.right; } 26 | } 27 | #endregion 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Domain/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /LCLDemo/LCL.Services/Global.asax.cs: -------------------------------------------------------------------------------- 1 | using LCL.Infrastructure; 2 | using System; 3 | using System.IO; 4 | 5 | namespace LCL.Services 6 | { 7 | public class Global : System.Web.HttpApplication 8 | { 9 | protected void Application_Start() 10 | { 11 | SetDataDir(); 12 | EngineContext.Initialize(false); 13 | } 14 | 15 | private static void SetDataDir() 16 | { 17 | DirectoryInfo baseDir = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); 18 | string data_dir = baseDir.FullName; 19 | if ((baseDir.Name.ToLower() == "debug" || baseDir.Name.ToLower() == "release") 20 | && (baseDir.Parent.Name.ToLower() == "bin")) 21 | { 22 | data_dir = Path.Combine(baseDir.Parent.Parent.FullName, "App_Data"); 23 | } 24 | AppDomain.CurrentDomain.SetData("DataDirectory", data_dir); 25 | } 26 | } 27 | } --------------------------------------------------------------------------------