我在两个实体(父和子)之间有父子关系.
我的父映射如下:
<class name="Parent" table="Parents">
...
<bag name="Children" cascade="all">
<key column="ParentID"></key>
<one-to-many class="Child"></one-to-many>
</bag>
</class>
Run Code Online (Sandbox Code Playgroud)
我想执行以下操作:
someParent.Children.Remove(someChild);
Run Code Online (Sandbox Code Playgroud)
Child类具有对另一个父类Type的引用.这种关系看起来像
注意:我为上面的非链接url道歉,我似乎无法使用Markup通过url字符串中的星号
由于这种关系,当调用上面的代码而不是DELETE查询时,会生成一个UPDATE查询,该查询从Child表中删除ParentID(设置为null).
当从Parent.Children集合中删除时,是否可以强制NHibernate完全删除子记录?
UPDATE
@ Spencer的解决方案
非常有吸引力的解决方案,因为这可以在未来的课程中实现.但是,由于在存储库模式中处理会话的方式(在我的特定情况下),这几乎是不可能的,因为我们必须根据应用程序传递会话类型(CallSessionContext/WebSessionContext).
@ Jamie的解决方案
简单快速地实施,但是我遇到了另一个障碍.我的子实体看起来如下:
使用新方法时,NHibernate生成一个更新语句,将TypeID和ParentID设置为null,而不是单个删除.如果我错过了实现中的某些内容,请告诉我,因为这种方法可以轻松推进.
@ 此处描述的One-Shot-Delete解决方案概述了取消引用该集合以强制单个删除的想法.与上述结果相同,但发布了更新声明.
//Instantiate new collection and add persisted items
List<Child> children = new List<Child>();
children.AddRange(parent.Children);
//Find and remove requested items from new collection
var childrenToRemove = children
.Where(c => c.Type.TypeID == 1)
.ToList();
foreach (var c in childrenToRemove) { children.Remove(m); }
parent.Children = null;
//Set persisted collection to new list …
Run Code Online (Sandbox Code Playgroud) 我需要替换标记{URL}:
DECLARE @PageUrl varchar(200)
DECLARE @Body varchar(MAX)
SET @PageUrl = 'http://www.website.com/site1/site2/pageName.asxp?rid=1232'
SET @Body = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed luctus,
{URL} enim nec posuere volutpat, neque dui volutpat turpis. '
SET @Body = REPLACE(@Body,'{Url}', CONVERT(varchar,@PageUrl))
PRINT @Body
Run Code Online (Sandbox Code Playgroud)
我的预期结果是:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed luctus,
http://www.website.com/site1/site2/pageName.asxp?rid=1232 enim nec posuere volutpat, neque dui volutpat turpis.
Run Code Online (Sandbox Code Playgroud)
打印结果如下:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed luctus,
http://www.website.com/site1/s enim nec posuere volutpat, neque dui volutpat …
Run Code Online (Sandbox Code Playgroud) 我试图在我自己的应用程序中复制GMail的一个功能.
更改GMail中的文件夹时,显示屏将保留在屏幕上,并在网站顶部显示一个小的加载横幅.
这是可取的,因为它可以防止屏幕全部变白并且在回发时干扰用户工作流程.
我试图用Firebug拆解它,我觉得我已经接近了.
GMail站点由100%大小的Iframe组成,其中包含整个界面.在此框架之后是包含加载横幅的div.div是不可见的,位于Iframe的后面.
在iframe前面移动横幅的脚本被执行了什么?
谢谢,
马丁威比
我试图使用计数器变量使用单个UPDATE/SELECT语句对桥表上的某些行进行编号@row
.例如:
UPDATE teamrank JOIN (SELECT @row := @row + 1 AS position, name FROM members)
USING(teamID, memberID) SET rank = position
Run Code Online (Sandbox Code Playgroud)
这样的事情是可能的还是我需要创建一个游标?如果它有帮助,我使用的是MySQL 5.
如果你有一个链接或脚本标签,比如说css或js文件,你在url中有类似的东西,那是什么?例:
<script src="home.js?1" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
只是一个基本问题......
我有两个字符串.如何确定第一个字符串是否仅由第二个字符串给出的字母组成?
例如:
A = abcd
B = abbcc
Run Code Online (Sandbox Code Playgroud)
应该返回false,因为d
不在第二个字符串中.
A = aab
B = ab
Run Code Online (Sandbox Code Playgroud)
应该回归真实.
如果程序大部分时间都返回false,我该如何优化该程序?如果它在大多数情况下都返回true,那么我该如何优化呢?
在生产环境中部署了 ASP.NET 站点的新版本后,我每秒记录数十个数据错误,几乎总是出现错误“找不到表 0”。我们使用数据集并经常参考Table[0]
,虽然我了解在访问之前检查数据集的表的防御性编码实践Table[0]
,但在过去从来不是问题。某个页面会在一秒钟内正常加载,然后在下一秒钟会丢失其数据驱动组件之一。只是看看这是否为任何人敲响了警钟。
更多细节:这次我使用了不同的构建服务器,虽然我认为两者的编译器设置是相同的,但我很难想到有一个开关可以让我的 50% 的数据库调用在没有表的情况下返回。我也将项目切换到 VS 2008,但是当我切换回 VS 2005 时恢复了所有这些更改。我注意到构建的程序集有一个新的MyLibrary .XmlSerializers.dll,它不习惯,但我也无法想象这是造成所有麻烦的原因。(它也不会因调用MyLibrary而失败,或者至少不会超过任何其他时间。)
更新添加:我发现麻烦的构建是“发布”构建,其中工作构建被编译为“调试”。 这能解释吗?
在这些更改修复它之前回滚到构建。(重新启动 SQL Server,我们之前尝试过的步骤没有。)
问题似乎也是基于负载的——这在我们的集成和 QA 环境中毫无问题地巡航,甚至我们的冒烟测试环境——指向生产数据的环境——在轻负载下也很好。
这是否具有您过去可能见过的任何事物的显着特征?
我写了一些bash脚本(每行<200行代码)我想与世界分享,但由于我是FLOSS粉丝,我首先想到的是根据GPL的条款分享它们.
但是......那是胡说八道吗?我的意思是,我理解为什么要在GPL的条款下共享整个应用程序,但对于这样的小脚本是否有意义?或者将它们作为公共领域分享是最好的事情,因为它们没有什么特别的或花哨的东西?或者那里的脚本是否有任何特殊的许可"处理"?
我非常感谢有关此事的一些意见,并提前感谢.
编辑:感谢大家的答案...我希望我能接受不止一个,因为他们都完全回答了我的问题!
这些似乎是一个很好的组合 - 我希望至少看到GWT/iPhone整合,但没有太多.
我查看了谷歌制作的读者示例,但它似乎没有利用许多iPhone功能.
我想知道是否有人知道教程/资源显示如何使用位置,方向,拉伸/挤压和各种iPhone特定控件之类的东西 - 以及与谷歌地图等服务的集成.
如果它也使用AppEngine会很好,但如果没有,那么以后很容易集成.
也许我要求的太多,但我甚至会选择一个专注于这些平台的技术博客......
我想知道是否有人知道全球职位的总长度.例如:
$_POST['formInput'] = "hello world, how long can i be?";
Run Code Online (Sandbox Code Playgroud)
我正在创建一个网站,其中有人会将未知数量的字符输入文本区域,因此可能是word文档上的2页.那么,如果有人知道除了使用后全局之外我怎么能做到这一点?(它不能保存在文件中,作为我不希望其他人找到的重要数据)这将非常有帮助.
谢谢