您好我正在使用asp.net Web应用程序的每个请求事务(视图会话)模式.我在应用程序中有几个要点,我想保存一个NHibernate管理实体,然后使用常见的SQL执行几个插入和更新.这些插入/更新取决于NH保存实体将采用的ID.
问题是生成的id在事务范围内不存在.如果我强制刷新/提交id是持久的,但如果插入/更新失败,我必须回滚,但刷新/提交的实体不会.目前我正在为这些案例进行手动插入,但这是我想要改变的.那么,有没有办法在Save()之后执行SQL语句(在已打开的事务中)但不强制刷新/提交?
编辑:我正在添加一个半伪代码示例,我有4个错误的答案所以我认为人们不理解(NHibernate如何工作)在开始请求我发出一个
nhsession.BeginTransaction()
Run Code Online (Sandbox Code Playgroud)
然后在某些时候我做
FooClass fc = new FooClass("value");
nhsession.Save(fc);
ITransaction trans = nhsession.Transaction;
SqlCommand sc = new SqlCommand("some insert/update query that depends on fc's id", (SqlConnection)nhsession.Connection);
sc.Parameters.Add("id", fc.Id); //NHibernate generates the id, note i'm using assigned/hi-lo so no round trip to the db takes place
transaction.Enlist(sc);
try {
sc.ExecuteNonQuery();
}
catch (SqlException ex){
transaction.RollBack();
nhsession.Close();
}
Run Code Online (Sandbox Code Playgroud)
在请求结束时我发出一个CommitTransaction()和nhsession.Close()
现在这绝对不会做任何事情:FooClass (fc)尚未刷新/提交到数据库.在Save()该NH所做的操作是高达内存这一点.这意味着nhibernate没有发出sql命令,这意味着SqlCommand (sc)我之后触发的那个命令将失败,因为id不存在.
如果我做了冲洗/间提交Save()与SqlCommand该FooClass(fc)_cannot_be_rolled_back_,这是一个坏人坏事.目前,为了这个工作我使用一个vanila sql插入 …
当"成本"这个话题出现时,我和同事正在讨论WFC服务.
问题是:
鉴于IIS托管的WCF服务和Windows服务托管的WCF服务完全相同,如果它们都接受相同的负载,哪个服务在内存和CPU周期方面会更"昂贵"?
我们不关心初始启动编码,安装或配置(IIS似乎旨在提供更简单的体验),只是运行服务的简单成本.
您知道GCC编译器基础架构中存在多大的VLIW架构支持吗?我知道GCC支持一些VLIW架构.看看它们,似乎管道优化留给了另一个优化层.这是否有好的(不是GCC内部文件)材料?
经过对valgrind的大量调查后,我得出结论,std :: vector制作了你想要push_back的对象的副本.
这是真的吗?没有副本,向量不能保留对象的引用或指针?
谢谢
这个问题是我的一个学生问的,我想用一个例子来启发他:
"为什么我们不应该通过Dreamweaver的AP Div按钮创建网站布局,使用AP Div而不是浮点数+边距+填充更容易进行布局,如果这种方法不正确那么为什么它不是好方法以及为什么Adobe在Dreamweaver中将此按钮赋予即使布局不正确,也要进行布局?"
任何人都可以用一个简单而简洁的例子解释为什么position:absolute不应该用于定位一切?
我们是否应该使用它来定位布局元素(#wrapper,#header,#footer,#mainContent,#sidebar等)?
如果我们使用位置进行布局,我们可以遇到什么问题:绝对使用Dreamweaver AP div按钮工具栏按钮图像http://livedocs.adobe.com/en_US/Dreamweaver/9.0/images/draw_layer_button.gif?
我知道立场:绝对不好,但我无法很好地解释或提供任何例子.
当浏览器重新调整大小以使视口变小时,如何使彼此相邻的DIV不会被包裹?
div {
float: left;
}
Run Code Online (Sandbox Code Playgroud)
例如,当浏览器完全最大化时,divs排列如下:
|div| |div| |div| |div| |div| |div| |div| |div|
Run Code Online (Sandbox Code Playgroud)
但是当浏览器重新调整大小时会发生这种情况:
|div| |div| |div| |div| |div|
|div| |div| |div|
Run Code Online (Sandbox Code Playgroud)
div当浏览器重新调整大小时,如何使s不包装?
可能重复:
C++:如何拆分字符串?
分裂一个字符串
在c ++中用空格分割字符串的最佳方法是什么?
我希望能够根据制表符,空格等拆分它,当然也可以忽略多个制表符/空格/等.连续,并没有在最后有这些事情的问题.
最后,我最终将它存储在一个向量中,但如果有一些简单的内置标准库分割方法,我可以轻松地在数据类型之间进行转换.
我在使用g ++的UNIX机器上构建它,而不是使用Microsoft Visual C++
问题是我想检查文件是否太大而无法上传,以便我可以显示相关的错误消息,但是当文件大于 php.ini 中的 upload_max_filesize 时,它似乎只显示 0。
为什么会发生这种情况?如何测试文件太大而无法给出相关错误?
我计划将MPI用于我的C++代码.我在我的电脑上安装了MPICH2.但我对MPI知之甚少,希望能找到一些材料来阅读.我希望你的专家可以向我推荐一些好的材料.任何建议将被认真考虑.
假设我有n个元素的数组.我想采用前十个元素并对它们做一些事情然后接下来十个,依此类推,直到完成数组.
什么是正确的Ruby方法呢?(使用c语言后台我可以编写一些for循环,在循环内部计数为10,执行操作并将我的簿记变量设置为零并继续主数组处理..)
c++ ×3
css ×2
arrays ×1
asp.net ×1
c# ×1
dreamweaver ×1
file-upload ×1
gcc ×1
html ×1
iis ×1
max-size ×1
mpi ×1
nhibernate ×1
php ×1
ruby ×1
self-hosting ×1
stdvector ×1
stl ×1
string ×1
transactions ×1
vliw ×1
wcf ×1
xhtml ×1