vs.net下面,有什么好的O/R mapping的方式?

juqiang 2003-05-08 05:35:58
谢谢!
...全文
48 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
juqiang 2003-05-10
  • 打赏
  • 举报
回复
cache里面,已经测试通过了。不过,效率的问题,暂时还没有测试。一个物料的表,有90万条数据,呵呵,真不知道会怎样?
juqiang 2003-05-09
  • 打赏
  • 举报
回复
我正准备测试,不过,放在Application里面,还要Lock和Unlock,我放到HttpContext.Cache里面看看,要测试一次。
timmy3310 2003-05-09
  • 打赏
  • 举报
回复
Application会增加服务器的负载,这是毫无疑问的

不过静态数据放到Application当中,可以减少IO操作,但是有一点要注意,使用Application对象的时候要处理线程同步的问题,并且放到其中的对象应该要保证线程安全

照你情况,往Application里面放太多数据的话,是不太可取的,增加了维护的难度和服务器的负载,不过这也不是绝对的,你可以做一些测试来取舍
juqiang 2003-05-09
  • 打赏
  • 举报
回复
请大家指教!
juqiang 2003-05-08
  • 打赏
  • 举报
回复
这是我的思路:

为了在OO和效率之间作一个平衡,考虑使用cache。在我们的单据中,每个表体对象或者表头对象,都引用了若干个基础字典表的内容。
1、基础字典维护的时候(增加、删除、修改),该dataset提交给webservice,ws调用后台的功能进行更新处理。同时,该dataset放到ws服务器的Application对象里面。这样就保证Application里面的dataset永远是最新
2、单据需要引用基础数据的时候,不从数据库里面读,而是从Application里面的dataset读。
疑问:ws服务器的负载,是否能够承受?!
其他疑问?!
juqiang 2003-05-08
  • 打赏
  • 举报
回复
感谢各位老大,希望大家踊跃发言呀!
timmy3310 2003-05-08
  • 打赏
  • 举报
回复
针对你目前的问题,在不更改整体设计的情况下,有一个建议看适不适用

你可以把字段声明为属性,然后在Get它的时候才去实例化,这样在实例化你的SomeClass的时候,不会Load A、B、C..;但是用到它们的时候,还是会去Load,如:

public class SomeClass{
private A theA;
A a
{
get {
if( theA==null )
//Load A
return theA;
}
}
}

timmy3310 2003-05-08
  • 打赏
  • 举报
回复
TypeDataSet是比较好的一种方式,但是用来对付你的情况,也会出现和你一样的问题

使用DataSet或者其他Mapping方式,要达到完全的Mapping到每一张表,势必会损失效率,有的情况,自己定制一些类会提高效率,不过会破坏一些整体的完整性
但是如果设计得当,效率与OO之间的平衡还是可以找到
timmy3310 2003-05-08
  • 打赏
  • 举报
回复
你这种情况,应该另外写DataAccess的组件用SQL查询来Load你的对象,也就是说不用Select * 的方式查7次,而用Join Table的方式查一次

虽然一般情况,都是一张表Mapping到一个类上面,但是有时候也不必淤泥
chainet 2003-05-08
  • 打赏
  • 举报
回复
gz
juqiang 2003-05-08
  • 打赏
  • 举报
回复
OO和效率,怎么能够尽可能的平衡?
juqiang 2003-05-08
  • 打赏
  • 举报
回复
假设某条记录,里面关联到了7个表的7个字段,假设这7个表被分别mapping到了7个class,名字叫A到G。我们曾经这么实现过

public class SomeClass{
A a;
B b;
C c;
}

这样,如果我load一条记录:就是SomeClass的一个实例,那么我需要重新load a到z这7个表的内容。数据库负担太重。
课程简介:  本项目课程是一门极具综合性和完整性的大型项目课程;课程项目的业务背景源自各类互联网公司对海量用户浏览行为数据和业务数据分析的需求及企业数据管理、数据运营需求。 本课程项目涵盖数据采集与预处理、数据仓库体系建设、用户画像系统建设、数据治理(元数据管理、数据质量管理)、任务调度系统、数据服务层建设、OLAP即席分析系统建设等大量模块,力求原汁原味重现一个完备的企业级大型数据运营系统。  拒绝demo,拒绝宏观抽象,拒绝只讲不练,本课程高度揉和理论与实战,并兼顾各层次的学员,真正从0开始,循序渐进,每一个步骤每一个环节,都会带领学员从需求分析开始,到逻辑设计,最后落实到每一行代码,所有流程都采用企业级解决方案,并手把手带领学员一一实现,拒绝复制粘贴,拒绝demo化的实现。并且会穿插大量的原创图解,来帮助学员理解复杂逻辑,掌握关键流程,熟悉核心架构。   跟随项目课程,历经接近100+小时的时间,从需求分析开始,到数据埋点采集,到预处理程序代码编写,到数仓体系搭建......逐渐展开整个项目的宏大视图,构建起整个项目的摩天大厦。  由于本课程不光讲解项目的实现,还会在实现过程中反复揉和各种技术细节,各种设计思想,各种最佳实践思维,学完本项目并勤于实践的话,学员的收获将远远超越一个项目的具体实现,更能对大型数据系统开发产生深刻体悟,对很多技术的应用将感觉豁然开朗,并带来融会贯通能力的巨大飞跃。当然,最直接的收获是,学完本课程,你将很容易就拿到大数据数仓建设或用户画像建设等岗位的OFFER课程模块: 1. 数据采集:涉及到埋点日志flume采集系统,sqoop业务数据抽取系统等; 2. 数据预处理:涉及到各类字典数据构建,复杂结构数据清洗解析,数据集成,数据修正,以及多渠道数据的用户身份标识打通:ID-MAPPING等;3. 数据仓库:涉及到hive数仓基础设施搭建,数仓分层体系设计,数仓分析主题设计,多维分析实现,ETL任务脚本开发,ETL任务调度,数据生命周期管理等;4. 数据治理:涉及数据资产查询管理,数据质量监控管理,atlas元数据管理系统,atlas数据血缘管理等;5. 用户画像系统:涉及画像标签体系设计,标签体系层级关系设计,各类标签计算实现,兴趣类标签的衰减合并,模型标签的机器学习算法应用及特征提取、模型训练等;6. OLAP即席分析平台:涉及OLAP平台的整体架构设计,技术选型,底层存储实现,Presto查询引擎搭建,数据服务接口开发等;7. 数据服务:涉及数据服务的整体设计理念,架构搭建,各类数据访问需求的restapi开发等;课程所涉及的技术: 整个项目课程中,将涉及到一个大型数据系统中所用到的几乎所有主要技术,具体来说,包含但不限于如下技术组件:l Hadoopl Hivel HBasel SparkCore /SparkSQL/ Spark GRAPHX / Spark Mllibl Sqoopl Azkabanl Flumel lasal Kafkal Zookeeperl Solrl Prestop

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧