nhibernate

Many-to-many with Same Id Key fields

半城伤御伤魂 提交于 2020-06-27 16:56:31
问题 How do I join two tables as many-to-one and one-to-many in nHibernate. They both have the same 'PLAN_ID' as the key column. My Database structures pre-existing. Below is the mapping I am using and the error I'm getting: Table: PLANN ( one ) PLAN_ID <-- PRIMARY KEY START_DATE CHECK_CHAR ... Table: PLANN_DOCUMENT ( to many ) PLAN_ID <-- PRIMARY KEY DOC_ID <-- ID to a DOCUMENT table DOC_NAME DOC_TYPE Plann class: public virtual... PlanId, StartDate, CheckChar, PlanStatus, public virtual ISet

NHibernate Transaction.Commit automatically closes Session

旧城冷巷雨未停 提交于 2020-06-13 06:33:25
问题 I have a web application that is using the absolute latest version (3.3) and is using session-by-request session management within a HttpModule, so there are no problems with multiple session conflicts. Unfortunately, I am finding that the session is getting automatically closed immediately after I perform a Transaction.Commit which I only do when I am actually performing a Create, Update or Delete. I am finding this within my NHibernate log. I know for a fact that I am not doing it, because

Subquery with Entity Framework

≡放荡痞女 提交于 2020-05-23 12:06:11
问题 I'm porting a subsystem from NHibernate to Entity Framework and want to see the best way to port the following query to EF . var date = DateTime.Now; // It can be any day AccountBalanceByDate abbd = null; var lastBalanceDateByAccountQuery = QueryOver.Of<AccountBalanceByDate>() .Where(x => x.AccountId == abbd.AccountId && x.Date < date) .Select(Projections.Max<AccountBalanceByDate>(x => x.Date)); var lastBalances = session.QueryOver<AccountBalanceByDate>(() => abbd) .WithSubquery.WhereProperty

.NET(C#)主流的ORM框架

拥有回忆 提交于 2020-04-27 09:46:07
.NET(C#)主流ORM总揽 SqlSugar (国内) Dos.ORM (国内) Chloe (国内) StackExchange/Dapper (国外) Entity Framework (EF) (国外) NHibernate (国外) ServiceStack/ServiceStack.OrmLite (国外) linq2db (国外) Massive (国外) PetaPoco (国外) SqlSugar SqlSugar是国人开发者开发的一款基于.NET的ORM框架,是可以运行在.NET 4.+ & .NET CORE的高性能、轻量级 ORM框架,众多.NET框架中最容易使用的数据库访问技术。 特点: 开源、免费 国内开发者开发、维护; 支持.NET Core; 支持主流数据库,如:SQL Server,MySql,Oracle,Sqlite等; 维护更新及时 PetaPoco PetaPoco:轻量的POCO对象和数据库映射的ORM框架。 特点: 开源、免费 linq2db linq2db也是一款快速、轻量、类型安全的POCO对象和数据库映射的ORM框架。从构架上来说,linq2db是对比如:Dapper、PetaPoco这个的微ORM的进一步封装,但它不像Entity Framework那样笨重。它没有实现状态跟踪,需要自己处理实体的状态更改等。 推荐等级:★★★

第一章 搭建一个通用的.net core项目框架

女生的网名这么多〃 提交于 2020-04-27 02:39:45
项目目标部署环境:CentOS 7+ 项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx 开源地址:https://github.com/wmowm/nh.core 作为.net开发人员,我们最熟悉的肯定是经典的三层架构了 这里插入一个题外话,很多人喜欢拿三层跟mvc,mvvm 做一些比较,它们共通的只有一点,就是解耦,三层架构指的是项目结构,一个项目可以搭建三层,加个IDAL 那就是四层了,也可以是N层,MVC只是 UI层里的一个设计模式,mvvm只是前端的一种设计模式,例如vue 我们这里就基于经典的三层,进行拓展,并说明彼此之间关系 先说DAL数据访问层,很多小伙伴喜欢用ADO.net来操作数据库,简单方便,手写sql简洁又高效,这方面进行封装的栗子也很多,先创建一个DAL层,然后Nuget找.net core里操作SQL SERVER的驱动,测试链接,再测试CRUD,测试通过,完美! 刚高兴了一秒,反过来想想,好像有点不对劲,我们部署的目标环境是Linux,Linux上面好像没听说谁用SQL SERVER,用MySQL的最多,难道再去找MySQL的驱动......如果项目需求变了,随便往表里删除几个字段,加几个字段,那估计要崩溃 如何兼容多种数据库? ORM粉末登场,呸,闪亮登场...

[半翻] 设计面向DDD的微服务

廉价感情. 提交于 2020-04-26 13:21:27
这篇文章行文结构对照微软博客, 结合本人意译和多年实践的回顾思考形成此次读书笔记。 Domian-driven Design 领域-驱动-设计(DDD)提倡 基于(用例相关的现实业务)进行建模 。 1. DDD的视角 DDD将 现实问题视为领域 ; DDD将 独立的问题描述为有界限的上下文 (一个有界上下文对应一个微服务),并强调通用语言讨论这些问题 2. DDD提出的概念 许多技术概念和模式,例如充血模型(对应我们常写贫血模型)、值对象、聚合和聚合根规则。 3. 目前实施DDD的现状 有时DDD技术规则和模式被视为障碍/啰嗦,对于实施DDD方法而言,学习曲线比较陡峭。 不要为了实施而实施,最重要的是 使用通用语言编写与业务问题一致的领域代码 。 此外仅当您要实现具有复杂业务规则的微服务时,才应使用DDD方法,诸如CRUD服务之类的简单职责可以通过更简单的方法进行管理。 DDD模式可以协助 划分微服务边界 在已经确定的界限上下文,您可以为领域建模:实体模型、值对象和聚合,DDD与边界有关,微服务也与边界有关。 尽量保持小型微服务 划分界限上下文,要平衡两个目标: 创建尽可能小的微服务(这一点不应该成为主要动力) 要避免微服务之间过密的通信 这两个目标可能彼此矛盾,两者通过演进的方式达到平衡: 尽可能分解系统,直到在下次分解时感到服务通信迅速增加。 DDD微服务中的层

jqgrid 上移下移单元格

时间秒杀一切 提交于 2020-04-20 15:36:04
在表格中常常需要调整表格中数据的显示顺序,我用的是jqgrid,实现原理就是将表中的行数保存到数据库中,取数据时按行进行排序 1、上移,下移按钮 <a href= " javascript:void(0) " onclick= " operateWithOneRowById(up) " class = " linkButton " >上移</a> <a href= " javascript:void(0) " onclick= " operateWithOneRowById(down) " class = " linkButton " >下移</a> 2、上移下移 功能 function operateWithOneRowById(callback) { var selected = tableObj.jqGrid( ' getGridParam ' , ' selrow ' ); if (selected == null ) { alert( " 请用鼠标点击选择一行后再执行操作! " ); return ; } return callback(selected); } 3、这里的callback是up和down 函数的合并,那么我们再看看这两个函数 function up(selected) { if (selected == 1 ) return ; else {

Spring.NET学习笔记——前言

天涯浪子 提交于 2020-04-17 19:22:39
   Spring.NET 是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程( AOP )、数据访问抽象及ASP.NET扩展等等。 Spring.NET 以Java版的Spring框架为基础,将Spring.Java的核心概念与思想移植到了.NET平台上。   企业级应用一般由多个物理层组成,每个物理层也经常划分为若干功能层。不同层次之间需要相互协作,例如,业务服务层一般需要使用数据访问层的对象来实现某个用例。不管应用程序如何构建,最终都会表现为一系列相互协作的对象,这些对象一起组成了完整的应用程序。所以我们说,应用程序中的对象之间相互具有依赖性。   .NET平台为构建应用程序提供了丰富的功能,从非常基础的基元类型和基础类库(以及定义新类的方法),到功能完善的应用程序服务器和Web框架,都有很好的支持。但.NET平台本身并没有提供任何方式来管理基础的应用模块并将它们组合为一个相互协作的整体,只能依靠架构师或开发人员去创建(一系列)应用程序。诚然,目前有很多设计模式可用于业务系统的设计,我们可以使用这些模式将各种类或对象组合成能够正常工作的完整应用。工厂、抽象工厂、Builder、装饰及服务定位器(Service Locator)等模式已被现今的软件开发行业广泛接受和采用

netcore 非注入全局获取配置文件

孤街浪徒 提交于 2020-04-15 10:19:27
【推荐阅读】微服务还能火多久?>>> 在netcore开发中,最常见的就是注入,比如想获取appsettings.json的内容,我们就需要去注入,然后在controller里面去获取,但是我们如果想要在service中使用appsettings.json的内容,这样就是一个问题,并且每个controller去注入也是非常麻烦的事情 下面的注入的(这种方法百度一下可以出来几百条相同的搜索结果。。。参见 https://www.cnblogs.com/ideacore/p/6282926.html ) services.AddOptions(); services.Configure <AppSettings>(Configuration.GetSection( " AppSettings " )); 然后获取使用 我想要在service类库里面使用,这时该如何使用哪? 直接上代码: public class AppSettings { public string TestString { get ; set ; } public string ConfigVersion { get ; set ; } public string connectionString { get ; set ; } public string RedisExchangeHosts { get ; set

netcore 非注入全局获取配置文件

不问归期 提交于 2020-04-15 09:07:22
【推荐阅读】微服务还能火多久?>>> 原文: netcore 非注入全局获取配置文件 在netcore开发中,最常见的就是注入,比如想获取appsettings.json的内容,我们就需要去注入,然后在controller里面去获取,但是我们如果想要在service中使用appsettings.json的内容,这样就是一个问题,并且每个controller去注入也是非常麻烦的事情 下面的注入的(这种方法百度一下可以出来几百条相同的搜索结果。。。参见 https://www.cnblogs.com/ideacore/p/6282926.html ) services.AddOptions(); services.Configure <AppSettings>(Configuration.GetSection( " AppSettings " )); 然后获取使用 我想要在service类库里面使用,这时该如何使用哪? 直接上代码: public class AppSettings { public string TestString { get ; set ; } public string ConfigVersion { get ; set ; } public string connectionString { get ; set ; } public string