芯友网xin1234.com

如果关联查询一个Name,如果直接在Model里面添加一个相关联的Name字段,通过一个关联查询即可,如果写在ViewM



王小力
如果关联查询一个Name,如果直接在Model里面添加一个相关联的Name字段,通过一个关联查询即可,如果写在ViewModel,可能需要一次单独的查询来获取这个Name,这个如何衡量。。thanks
例如一个文章之关联了作者Id,但是显示的时候需要显示作者名
糖葫芦
看情况咯,如果需要就用incluede来关联加载
王小力
意思是写到Model中,做一次联合查询?这样时间长了,Model就有点面目全非了..
糖葫芦
嗯,不然呢
王小力
所以想问问各位大神有什么"标准规范"的实现..
我来自台湾
你的Model是指甚麼?
王小力
台湾哥..
我记得之前问过你这个问题
数据库实体对象..
我来自台湾
就 別把entity當viewmodel用
王小力
在不用任何开发框架(DDD),的情况下如何解决这样的问题,有什么原则。。。
我来自台湾
你view需要甚麼viewmodel就怎麼設計
controller負責把entity轉為viewmodel
王小力
也就是说之前假设的场景  Name要写到ViewModel中咯...
我来自台湾
跟框架無關的
王小力
然后再通过一次查询去查询对应的Name信息..
我来自台湾

基本上viewmodel能夠不設計為多層次就不要
κiξs丶浅瞳灬
湾湾哥。
我来自台湾
如果只是顯示 多層次還好處理
但如果是有編輯 多層次在MVC中問題很多
王小力
多一次查询,会不会有点浪费资源啊
我来自台湾
為什麼?
多一次?
王小力
假设之前的场景,我要查询展示一篇新闻,同时也要现实作者,但是呢,新闻的Entity里面之关联了UserId,所以还需要一个UserName。。
我来自豪宅
如果你的文章作者名字改变不需要更新那么可以缓存字段
我来自台湾
dbContext.Employees.Select(e => new DisplayViewModel
{
Name = e.Name,
CustomerName = e.Customer.Name
}
王小力
这种是EF的延迟加载吧。。
我来自台湾
沒呀
延遲加載只發生在Entity已經查詢到內存
EF加載有多種模式
王小力
哦,这是VM中。。。那好吧,我的“UserName”也写到VM中把。。
我来自台湾
你只要有個原則
切記
ViewModel是為View創建
多寫個ViewModel很多問題都沒了
王小力
恩。。
有大量重复的字段。我还想过能不能直接在VM中写个Model的类
我来自台湾
多層次的ViewModel可以透過partialview等機制做處理
王小力
台湾哥,还有个问题,在Repository中的UOW。。我看网上的很多例子都是顺序提交,,先删除在添加等等,这完全不实用。。
我来自台湾
映射Entity到ViewModel你可以透過automapper這類東西簡化代碼
順序提交
王小力
恩,也是用automapper。。
我来自台湾
啥意思?
王小力

就类似这样的代码。。
我来自台湾
TranscationScope不是UOW吧
跟UOW差別很大
王小力
我来自台湾
上面沒有NHUow呀
王小力
整个类太长,我只截了Commit方法
我来自台湾
喔 我明白了
你看下他的TranscationScop
是不是.net的TranscationScope
如果是
這段代碼本身就有問題了
commit的確要事務提交
但不應該是TranscationScope
王小力
看了一下ABP的UOW太复杂了..我简单实现了个
在IRepository里面定义的方法..
我来自台湾
... 你問題到底是啥?
我先問個問題
你知道
王小力
我这样写可否
我来自台湾
Uow是幹嘛的嗎?
你先回這問題
王小力
大概知道
我来自台湾
你說說
王小力
保存一个公用的db上下文,用于联合操作。。
我来自台湾
細節描述下
王小力
我来自台湾
很多人寫repository跟uow但卻不知道這些東西的目的
王小力
Repository抽象数据库的共同操作吧。。。
我来自台湾
...
王小力
我来自台湾
你先去看 企业应用架构模式 這本書中 對於uow與repository的定義
王小力
没实际做过DDD的项目,就是IBatisNet写了个Repository..。。
我来自台湾
你就會明白 你的問題的答案
uow repository是這本書作者提出的模式
王小力
恩,,@我来自台湾   thanks

相关问题
tp的model 和control 是不是一定要关联,就是说有control就必须要有model】 不一定;我的理解来说,control可以写方法,而且写得还比较多,而model写的方法是要和数数据库打交道才在model里面写的,是不是这样?对于model和control 我还不怎么清晰,各位指
sql一个联合查询关联了16个表 查询一次现在需要0.5s如果把这个查询做成存储过程大概能快多少】 变存储过程是减少编译时间 看你这个0.5S有多少是用于编译的了
mysql 查询一个字符串字段 最长的一条记录】 select 记录字段 from table order by length(记录字段) desc limit 1漏了一个where
sql 如何同时查询多个区间?】 数据大不大;有点大我要统计 周一 到周七的数据
------分隔线----------------------------
赞助商链接
赞助商链接
推荐内容