我是nHibernate的新手,并且试图通过正确的方式从Web应用程序表单POST更新分离的对象.(我们使用的是ASP.NET MVC)
我正在尝试更新的对象包含(除其他外)IList的子对象,映射的内容如下:
<bag name="PlannedSlices" inverse="true" cascade="all-delete-orphan">
<key column="JobNumber" />
<one-to-many class="SliceClass" />
</bag>
Run Code Online (Sandbox Code Playgroud)
我们已经安排了我们的MVC编辑视图表单,以便当它被回发时,我们的操作方法被传递给对象(包括子项的List <>.我们通过表单正确地往返所有实体ID.
我们对post动作方法的天真尝试执行session.SaveOrUpdate(parentObject),其中parentObject已被默认的modelbinder从视图表单中删除.
对于以下任何一种情况,这似乎都可以正常工作:
失败的方案是: - 删除子对象 - 即如果它们不在IList中,则不会从数据库中删除它们.没有例外或任何事情,他们只是不被删除.
我的理解是,这是因为nHibernate执行创建需要删除的子列表的魔力不适用于分离的实例.
我无法找到一个简单的例子,说明使用nHibernate这种行为方法应该是什么样的(即使用模型绑定器对象作为分离的nHibernate实例) - 基于MS EF的示例(例如http:// stephenwalther. com/blog/archive/2009/02/27/chapter-5-understanding-models.aspx)似乎使用方法'ApplyPropertyChanges'将已更改的属性从模型绑定对象复制到重新加载的实体实例.
所以,在这之后,问题很简单 - 如果我有模型绑定器给我一个包含子对象集合的新对象,我应该如何通过nHibernate更新它(其中'update'包括可能删除子节点)?
我正在将Win32串行类转换为Linux(Ubuntu)这个串行类所需的功能之一是"查看"串行缓冲区,以查看在读取串行端口之前在串行端口上等待了多少字节.
在这种修脚情况下,我只需要知道端口上是否有任何字节,然后再尝试读取它.
在Windows中我使用COMSTATS,但我似乎无法在Linux中找到类似的功能.
我的问题是:
在Linux上如何读取等待串口的BYTES/chars数量而不将其从串口缓冲区中删除?
我们正在考虑使用Python(IronPython,但我认为不相关)为另一个控制设备的应用程序提供一种"宏"支持.
我们想在Python中编写相当简单的函数,这些函数需要一些参数 - 这些函数可能是时间,温度和位置等.不同的函数将采用不同的参数,主应用程序将包含用户界面(类似于属性网格),允许用户为Python函数参数提供值.
因此,例如,function1可能需要一个时间和一个温度,而function2可能需要一个位置和几次.
我们希望能够从Python代码动态构建用户界面.容易做的事情是在模块中查找函数列表,并(使用inspect.getargspec)获取每个函数的参数列表.
然而,只是一个参数名称列表还不够 - 理想情况下我们希望能够包含关于每个参数的更多信息 - 例如,它是'类型'(高级类型 - 时间,温度等,而不是语言级别类型),也许是一个"友好名称"或描述.
所以,问题是,有什么好的'pythonic'方法可以将这种信息添加到函数中.
我想到的两种可能性是:
对参数使用严格的命名约定,然后从名称中推断出它们的内容(使用getargspec获取)
发明我们自己的docstring元语言(可能只是CSV)并使用docstring作为我们的元数据.
因为Python似乎非常流行用于构建大型应用程序的脚本,我想这是一个常见约定的解决问题,但我无法找到它们.
我有一个std :: vector包含一些数字,这些数字没有任何特定的顺序,并且数字之间可能有或没有间隙 - 例如,我可能有{1,2,3,6}或{2 ,8,4,6}或{1,9,5,2}等.
我想要一个简单的方法来查看这个向量并说"给我最低数字> = 1,它不会出现在向量中".所以,
对于上面三个例子,答案分别是4,1和3.
它不是性能关键,列表很短,所以没有任何关于复制列表和排序的问题,例如.
我并没有真正坚持这样做的方法,但我的STL技能严重萎缩,我可以感觉到我要做一些不优雅的事情 - 我很想知道其他人想出了什么.
容器对象如stl中的vector如何被破坏,即使它们是在堆中创建的?
编辑
如果容器包含指针,那么如何销毁这些指针对象
我似乎无法找到任何权威的,最新的(即1.0最终版)文档来了解ASP.NET MVC中标准模型绑定器的功能,特别是关于绑定涉及集合的复杂对象(以及它在HTML表单上的命名要求)
我发现了Phil Haack的博客文章(http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx),但它顶部有一个注释,说它是已过期,将会更新.这里也有一个有用的答案:复杂复合对象的自定义模型绑定器帮助但我无法弄清楚他是如何知道这些东西的.
此页面:http://www.asp.net/learn/mvc/#MVC_ActionFilters标题为"操作过滤器和模型绑定器",但只有实际包含有关过滤器的信息.
我是否擅长阅读消息来源或购买新的"额头帮"(并且希望它比我过去买错的其他Wrox书籍更好)?或者我错过了一个好的参考?
.NET框架中是否有任何类提供对\.\ G: - 样式路径的访问.(即原始卷)?
我们目前使用p /调用的ReadFile和WriteFile没有任何问题,这对于同步访问并不复杂,但添加异步读/写是很繁琐的,因为你需要特别注意接管和处理OVERLAPPED结构和管理事件对象的生命周期等(即我们在Win32代码中必须做的所有繁琐工作......)
使用任何简单的测试技术,很难证明您与GC的交互也是正确的.
毫无疑问,FileStream类包含所有这些代码,完全是防弹和精致的方式,并利用了许多我们无法使用的内部帮助程序.不幸的是,FileStream明确地阻止你打开原始卷,所以我们不能使用它.
框架中还有什么可以帮助避免从头开始编写这种代码吗?我在Reference Source中讨论过,但没有任何消息.
更新 - 我们已经尝试了下面的建议,以避免通过自己打开设备并传入句柄来检查路径类型.当我们尝试这个时,会出现以下错误(请注意,此跟踪会通过FileStream的contstructor - 即我们根本没有任何机会与流进行交互):
System.IO.IOException: The parameter is incorrect.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.SeekCore(Int64 offset, SeekOrigin origin)
at System.IO.FileStream..ctor(SafeFileHandle handle, FileAccess access, Int32 bufferSize, Boolean isAsync)
at OurApp.USBComms.UsbDevice..ctor(Char driveLetter) in
Run Code Online (Sandbox Code Playgroud)
作为参考,我们的CreateFile调用如下所示:
var deviceName = String.Format(@"\\.\{0}:", driveLetter);
var handle = SafeNativeMethods.CreateFile(deviceName,
0x80000000 | 0x40000000,
FileShare.ReadWrite,
0,
FileMode.Open,
(uint)FileOptions.Asynchronous | 0x20000000, // Last option is 'FILE_FLAG_NO_BUFFERING'
IntPtr.Zero);
if (handle.IsInvalid)
{
throw new IOException("CreateFile Error: " + Marshal.GetLastWin32Error()); …
Run Code Online (Sandbox Code Playgroud) 我发现自己开始写这个:
$($("a-selector-which-returns-multiple-objects")[index]).SomejQueryFunctionForExampleShow()
Run Code Online (Sandbox Code Playgroud)
因为我有一个返回多个对象的查询,然后[index]
运算符返回DOM对象,而不是jQuery对象,所以我将它转换回外部的jQuery对象$()
.
这工作正常,但看起来不够优雅,我觉得我错过了关于索引到jQuery对象集的一些东西 - 这样做的正确方法是什么?
在Fluent NHibernate中,References()返回一个不支持'ReadOnly()'方法的对象.
我正在尝试创建这种映射(即更新未传播到引用项目的映射):
<many-to-one update="false" insert="false"
name="DestinationSheet" column="DestinationSheetNumber" />
Run Code Online (Sandbox Code Playgroud)
在普通(map())映射上,可以使用ReadOnly()设置这两个属性.
我想做这样的事情:
References(x => x.DestinationSheet).
ColumnName("DestinationSheetNumber").ReadOnly();
Run Code Online (Sandbox Code Playgroud)
我可以使用SetAttributes()手动添加更新和插入属性,并且工作正常,但我担心References()上没有ReadOnly()的事实是我不应该尝试这样做的线索.
有谁知道为什么ReadOnly()在这种情况下不可用?
如何使用nant任务增加构建版本?更具体地说,我如何将它与assemblyinfo.cs中的版本号相关联?
我正在考虑在ASP.NET 2.0 Webform上使用ChangePassword控件.我不希望"取消"按钮显示.
是否有一种很好的方法来隐藏它而不诉诸愚蠢的"width = 0"类型的游戏?
或者也许有一种通用的方法来遍历这样的复合控件的各个部分并隐藏各个部分?
我有一个Button样式,似乎无法将边框的CornerRadius属性数据绑定到模板.这是一个依赖属性,因此它应该是数据可绑定的.我想知道我是否缺少使用正确的XAML语法?
<Style TargetType="{x:Type Button}" BasedOn="{x:Null}">
<Setter Property="FocusVisualStyle" Value="{DynamicResource MyButtonFocusVisual}"/>
<Setter Property="Background" Value="{DynamicResource MyButtonBackgroundBrush}"/>
<Setter Property="Foreground" Value="{DynamicResource MyButtonForegroundBrush}"/>
<Setter Property="BorderBrush" Value="{DynamicResource MyButtonBorderBrush}"/>
<Setter Property="BorderThickness" Value="3"/>
<Setter Property="FontFamily" Value="Segoe UI"/>
<Setter Property="FontSize" Value="14" />
<Setter Property="CornerRadius" Value="2" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<!-- We use Grid as a root because it is easy to add more elements to customize the button -->
<Grid x:Name="Grid">
<Border x:Name="Border" CornerRadius="{TemplateBinding CornerRadius}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter> …
Run Code Online (Sandbox Code Playgroud) 哪个更快,为什么?
Person person = new Person();
person.FirstName = "Scott";
person.LastName = "Guthrie";
person.Age = 32;
Run Code Online (Sandbox Code Playgroud)
的...
Person person = new Person { FirstName="Scott", LastName="Guthrie", Age=32 };
Run Code Online (Sandbox Code Playgroud) .net ×3
c# ×3
asp.net-mvc ×2
c++ ×2
nhibernate ×2
stl ×2
asp.net ×1
containers ×1
cornerradius ×1
data-binding ×1
filesystems ×1
jquery ×1
linux ×1
modelbinders ×1
nant ×1
properties ×1
python ×1
serial-port ×1
styles ×1
vector ×1
webforms ×1
wpf ×1