只是想知道在数据库中存储"更新者"类型字段是否存在首选方法或最佳实践.我倾向于只看到用户名经常被存储,但我一直在设计我的表,其中包含上次更新该表的用户的ID.
是否有理由使用一种方法而不是另一种方法?我喜欢我的方法,有一个很好的反向引用来获取用户......另一方面,它通常意味着你永远不会删除用户(如果你还使用它也是为了创建者)所以也许这是不够的理由?更不用说当一切都必须指向一个表时,图表或ORM映射是多么混乱......
我搜索谷歌找到.net中3层和n层架构的主要区别,但我没有找到它.一些网站表示两者性质相同,有些网站表示它们之间存在差异.
我想知道主要的差异,哪一个在性能优化方面更好?
让我先发布我的数据库结构.表:monsterdata - http://prntscr.com/92eet 表:user_team - http://prntscr.com/92eef
我希望user_team(m1,m2,m3,m4,m5,m6)中的数据与monsterdata.id匹配,以便我可以检索其他信息.我设法做的只是检索一个数据
SELECT * FROM monsterdata LEFT JOIN user_team ON monsterdata.id=user_team.m1
Run Code Online (Sandbox Code Playgroud)
但我真正想做的是,将m2,m3,m4,m5,m6包含在monsterdata.id = user_team.X中
这可能是愚蠢的,但我更愚蠢的是不知道如何做到这一点. 谢谢您的帮助!
所以我写了一个Linq查询,运行需要16秒.决定查看查询计划是什么,所以我从Linq到SQL Profiler得到了它,并且查询只需要2秒就可以运行. 叹
在花了大量时间进行操作并最终使用SQL Server Profiler后,我发现Linq2SQL正在使用sp_executesql来运行查询.我知道它应该提高性能,因为它更有可能重新使用执行计划......但它似乎选择了一个可怕的执行计划来使用.
更奇怪的是,如果我加入一个特定的表,它只会变慢,我不知道为什么这个特定的表引起了问题.
编辑只是为了澄清这里的实际问题:
它实际上是在进行不同的查询.一个是,基本上,
SELECT col1, col2, ... FROM table1, table2 WHERE table1.val IN (1234, 2343, 2435)
Run Code Online (Sandbox Code Playgroud)
另一个是
EXEC sp_executesql 'SELECT col1, col2, ... FROM table1, table2 WHERE table1.val IN (@p1, @p2, @p3)',
N'@p0 int,@p1 int,@p2 int,@p3 int',
@p0=1234, @p1=2343, @p3=2435
Run Code Online (Sandbox Code Playgroud) 我们有一个使用jquery弹出的模式对话框,目的是在用户开始使用应用程序的主要部分之前向他们发出一些信息提醒。没什么复杂的,但是由于某种原因,我测试过的所有浏览器/屏幕阅读器组合都无法读取全部或部分对话框。
我已经测试了IE8 / JAWS15,Firefox / JAWS15和Chrome / Chromevox。
这是对话框本身的HTML。
<div id="divBrowserMessagePopup" class="ui-dialog-content ui-widget-content" aria-labelledby="divBrowserMessageTitle" aria-describedby="divBrowserMessage" hidden style="width: auto; min-height: 150px; height: auto; padding: 0px; border: 0px none;">
<div id="divBrowserMessageUserPopup">
<div class="modelpopup" style="border:0">
<div class="modelpopup-top">
<span class="sprite close" id="browserMessage-popupclose"></span>
<div id="divBrowserMessageTitle"> <h1>Title of Dialog</h1></div>
</div>
<div class="modelpopup-content">
<div id="divBrowserMessage">this is a very important message we want the user to "see!"</div>
</div>
<div class="model-button">
<button class="button-lrg-pri float-right" id="btnBrowserMessageOk">OK</button>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我们用来使其成为对话框并显示它的jqueryUI脚本。
$('#divBrowserMessagePopup').dialog({
autoOpen: false,
resizable: false,
modal: true,
width: '450px', …Run Code Online (Sandbox Code Playgroud) 我应该能够从子查询中引用join子句中的表,不应该吗?
但是以下查询给出了错误,说明它们无法绑定:
select *
from call c
JOIN call_task ct ON c.call_no=ct.call_no AND ct.calltask_no = (select min(ict.calltask_no) FROM call_task ict WHERE ict.call_no=c.call_no)
JOIN business b ON c.service_business_id=b.business_id
JOIN item i ON ct.item_id=i.item_id
JOIN ( select top 1 *
FROM contract_line icl
WHERE icl.item_id = i.item_id
AND icl.location_no = c.service_location_no
AND icl.business_id = b.business_id
ORDER BY icl.cancel_date asc
) cl ON i.item_id=cl.item_id
AND cl.location_no=c.service_location_no
AND cl.business_id=b.business_id
JOIN [contract] co ON cl.cont_no=co.cont_no
JOIN business_location bl ON bl.business_id=c.service_business_id AND bl.location_no=c.service_location_no
WHERE b.bus_code='INGRAM04'
AND …Run Code Online (Sandbox Code Playgroud) 有什么办法可以将OpenPop.NET MailMessage转换为System.Net.Mail.MailMessage?
使用一个新项目学习ASP.NET MVC,并且不确定某些事情应该发生在哪里.我已经读过ViewModels是一件好事(tm)并且计划以类似的方式进行,但我仍然不完全清楚模型与控制器的责任.
ViewModel应该负责从ORM实际加载自己吗?因此控制器只调用ViewModel.GetObject()并将结果传递回视图?
或者我应该在Controller中加载数据,然后将其转换为ViewModel?似乎这样在Controller中投入了大量的工作,但应该保持一定的轻量级.
我想我也可能有第三方负责提取数据,然后Controller会调用它并将其转换为适当的ViewModel.
那么对什么是"最佳"方法的任何想法?