新手求助关于CRUD实体中CRUD操作的分层问题

问题描述

简单的3层框架引用关系从上到下是UI-BLL-DAL-ENTITY,在C#编译时是从下到上编译的问题是,现在我做个小项目,将基本的CRUD做了个BLLBASE的基类放在BLL层里,然后由BLLBASE操作在DAL层中的DALBASE中的STAITIC方法,用HIBERNATE操作数据库。我本来的想法是用实体层全部继承BLLBASE方法------------------------BLLBASE部分代码------------------------------publicabstractclassBLLBase{publicBLLBase(){}publicBLLBase(intentityId):this(){DALBase.Load(this,entityId);}publicvirtualvoidCreate(){DALBase.Create(this);}publicvirtualvoidUpdata(){DALBase.Update(this);}publicvirtualvoidDelete(){DALBase.Delete(this);}publicvirtualvoidLoad(intentityId){DALBase.Load(this,entityId);}}---------------------------------DALBASE部分代码-----------------------publicstaticvoidCreate(ObjectentityObject){ITransactionit=session.BeginTransaction();try{session.Save(entityObject);it.Commit();}catch(Exception){it.Rollback();throw;}}-------------------------------------------------------------------哪么我就可以应用常用的CRUD操作例如USER.CREATE()等等,但是做到这里突然发现,这时候层的依赖关系发生了变化,变成了UI-ENTITY-BLL-DAL。按道理这好像是错误的逻辑关系。而且,假如我要在BLLUSER中添加新方法例如QueryAll(USERuser){}等,,就会出现依赖项目的循环引用问题。于是我迷茫了,难道CRUD的所有操作只能写成ENTITY基类放在实体层里。而不应该像我这样按简单3层的按功能分在BLLBASE和DALBASE里?如果放在ENTITY基类里,那么对数据库的操作不就分成了2块,一块由ENTITY直接操作,1块右DAL层操作,一是感觉代码重复,二是感觉不利于维护。求教各位大大,到底我在代码分层逻辑上哪错了,并提供相关的成熟分层方式注:此项目想用NHIBERNATE进行CRUD,但同时想用ADO.NET操作DATAGRIDVIEW等数据查询,所以肯定需要对DALUSER这些类进行QUERY等方法的扩展感觉自己写的乱七八糟,表述不清除……希望还是有人能看得懂@-@!

解决方案

解决方案二:
顶~~~~~~~~~~

时间: 2024-09-14 22:14:18

新手求助关于CRUD实体中CRUD操作的分层问题的相关文章

多线程问题-新手求助关于Java多线程中启动线程问题

问题描述 新手求助关于Java多线程中启动线程问题 public class Example15_1 { /** * @param args */public static void main(String[] args) { // TODO Auto-generated method stub SpeakHello speakHello; SpeakNinhao speakNinhao; speakHello = new SpeakHello(); speakNinhao= new Speak

set-新手求助,关于SecureCRT 中脚本运行总是提醒语句未结束的问题。

问题描述 新手求助,关于SecureCRT 中脚本运行总是提醒语句未结束的问题. 本人为了研究自动upgrade,写了一个脚本.在win7系统自带CMD中运行,无任何问题.编写成脚本后,crt.Screen.Send "/s/misc/eqid set "MTQ"" & vbcr这一行总是出故障.求大神指点,非常感激. 附脚本文件: $language = "VBScript" $interface = "1.0" S

发帖功能-【新手求助!!】android 中如何实现类似“说说”“帖子”的加载

问题描述 [新手求助!!]android 中如何实现类似"说说""帖子"的加载 最近想做一个发帖的功能,但是不知道 怎么把写好的"帖子" 加载在另一个布局里.求帮助,,有实例最好 或者可以详细讲讲思路 拜谢! 解决方案 你是说想QQ空间发说说那样吗? 是的话 很简单 点击发说说调到说说界面 利用 startActivityForResult(intent, Constants.VOTE); 发了说说成功之后结束说说界面 setResult(Con

窗口-新手求助:C#中 如何将form1中picture box1的图片放大 透明 无边框的显示到form2中...

问题描述 新手求助:C#中 如何将form1中picture box1的图片放大 透明 无边框的显示到form2中... 如题,,新手,还请尽可能详细点,,用C#处理图形 和多窗口 还是第一次..

java 三大框架 关于Excel导入数据库导出数据库有没有视频或者其他教程,【新手求助】

问题描述 [新手求助]java三大框架关于Excel导入数据库导出数据库有没有视频或者其他教程,由于刚刚接触到,所以不是很清楚.求大神有教程的分享下,不尽感激 解决方案 解决方案二:查查api这类的网上很多的.解决方案三:java导入导出Excel跟框架无关的,网上的例子很多的,关于java操作Excel,有poi,jxl,java2word,这里有个poi的视频,你可以看下http://www.java1234.com/a/yuanchuang/poi/解决方案四:利用poi读取单元格然后组装

c语言-C语言版非递归马踏棋盘·死循环了·求大神解答·小弟新手求助

问题描述 C语言版非递归马踏棋盘·死循环了·求大神解答·小弟新手求助 这是出现死循环的代码bool solution(Move move, Pos &beginPos){ if(!move) { printf("solution Failed!"); return false; } int chessBoard[8][8] = {0}; push(move, beginPos); chessBoard[beginPos.mX][beginPos.mY] = 1; int ste

新手求助 div+Css菜单

问题描述 新手求助 div+Css菜单 最近刚接触到Vs2015,做一个网站在手机上显示,主界面要求这样一个菜单,求大神帮帮忙,给段参考代码或者思路就行 解决方案 VS可以直接拖动控件的吧 解决方案二: div+css制作的菜单css+div+ul中向菜单javascript+div+css滚动菜单的实现.

归并排序-新手上路,链表学习中,问题是对功能函数不理解,问题已备注,请帮我在问题处写思路,尤其功能函数,谢谢!

问题描述 新手上路,链表学习中,问题是对功能函数不理解,问题已备注,请帮我在问题处写思路,尤其功能函数,谢谢! //第九章章末习题第10题#include//建立a b两链表包含学号成绩,把两个链表合并升序排列输出.求思路!#include#define LEN sizeof(struct student) struct student{ long num; int score; struct student * next; };struct student listalistb;int nsu

php-PHP新手求助这段注册代码的各种问题

问题描述 PHP新手求助这段注册代码的各种问题 这是个注册代码,我需要在注册的时候能够判断有没有输入账号密码什么的,然后密码要验证两次是否相等,然后注册成功要上传到数据库,可是什么功能都不成功,搞了好久好麻烦,我的localhost没有账号密码 <!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/