小编Tul*_*x86的帖子

将Enum映射为NHibernate 3.2中的字符串,按代码映射

通过代码使用NHibernate 3.2映射(不是fluent-nhibernate),我试图将Enum字段映射到字符串列而不是默认的int表示.我无法获得正确的语法.

例如:

    public class Account {
        public enum StateType { Pending, Active, Cancelled, Suspended }
        ...
        public virtual StateType State { get; set; }
        ...
    }
Run Code Online (Sandbox Code Playgroud)

在XML映射中,您可以使用NHibernate.Type.EnumStringType(请参阅此链接),但如何通过代码进行映射?

    NHibernate.Mapping.ByCode.ModelMapper mapper = new NHibernate.Mapping.ByCode.ModelMapper();

    mapper.Class<Account>(map => {
        map.Id(x => x.Id, attr => {
            attr.Column("id");
            attr.Generator(NHibernate.Mapping.ByCode.Generators.Identity);
        });
        // Default 'int' mapping
        //map.Property(x => x.State);

        // Cannot implicitly convert type 'StateType' to 'NHibernate.Type.EnumStringType'
        //map.Property<NHibernate.Type.EnumStringType<Account.StateType>>(x => x.State); 
Run Code Online (Sandbox Code Playgroud)

更新:

使用此映射,我设法将其作为字符串保存到数据库中,但是现在从DB加载到对象模型时会出现异常.

map.Property(x => x.State, attr => { attr.Type(NHibernateUtil.String); });

这是我在尝试加载对象时遇到的异常:

Invalid Cast …
Run Code Online (Sandbox Code Playgroud)

nhibernate nhibernate-mapping

23
推荐指数
1
解决办法
6483
查看次数

在PowerShell中展平数组

假设我们有:

$a = @(1, @(2, @(3)))
Run Code Online (Sandbox Code Playgroud)

我想变平$a获得@(1, 2, 3).

我找到了一个解决方案:

@($a | % {$_}).count
Run Code Online (Sandbox Code Playgroud)

但也许有更优雅的方式?

collections powershell

17
推荐指数
3
解决办法
8591
查看次数

为什么Visual Studio无法在这个简单的C#属性上设置条件断点?

在我的C#对象中,我使用value == "Status"此属性的setter中的条件设置了条件断点.通常它用PostSharp方面装饰,但我在这种情况下评论说它仍然有问题.

public virtual string Name
{
    get
    {
        return _name;
    }
    set
    {
        _name = value; // breakpoint here
    }
}
Run Code Online (Sandbox Code Playgroud)

第一次执行到达断点时,VS显示错误:

Visual Studio MessageBox

编辑 - 对于可搜索性,消息是这样的:

无法设置以下断点:

在(文件).cs,第137行第17个字符('(class).Name',第12行),当'value =="Status"'为真时

功能评估需要运行所有线程.

这是Threads窗口的样子:

调试器线程窗口

以前有人见过这个,或者有什么想法可能会导致调试器对这个看似简单的情况感到不满?它可能与睡眠线程有关吗?

c# debugging visual-studio-2010 visual-studio-debugging

17
推荐指数
1
解决办法
3756
查看次数

RegEx将匹配所有环回地址?

我有必须在使用时的警告用户的应用程序localhost,127.0.0.1,::1,或任何环回地址(目标主机被用于数据库到数据库的连接并不一定的应用程序的环境的内部).这很复杂,因为地址如下......

  • 127.1
  • 127.0.01
  • 127.0000.0000.1
  • 127.0.0.254
  • 127.63.31.15
  • 127.255.255.254
  • 0::1
  • 0000::0001
  • 0000:0:0000::01
  • 0000:0000:0000:0000:0000:0000:0000:0001

...将通过消费代码正确解析,并将解析为环回.

什么是正则表达式,它将匹配IPv4和IPv6环回地址的任何排列?

regex localhost loopback

12
推荐指数
1
解决办法
5370
查看次数

Meltdown缓解与`calloc()的CoW"延迟分配"相结合,是否意味着calloc()的性能损失 - 分配内存?

所以calloc()通过向操作系统询问一些虚拟内存来工作.操作系统正在使用MMU进行操作,并巧妙地响应虚拟内存地址,该地址实际上映射到一个写满了零的只读页面.当程序尝试写入该页面中的任何位置时,会发生页面错误(因为您无法写入只读页面),会创建该页面的副本,并且您的程序的虚拟内存将映射到这些全新的副本零.

既然Meltdown是一个东西,操作系统已被修补,因此不再可能跨内核用户边界推测性地执行.这意味着每当用户代码调用内核代码时,它就会有效地导致管道停顿.通常,当管道在循环中停顿时,它对性能造成破坏性,因为CPU最终会浪费时间等待数据,无论是来自缓存还是主存储器.

鉴于此,我想知道的是:

  • 当程序写入分配的从未访问过的页面calloc(),并且重新映射到新的CoW页面时,是否正在执行内核代码?
  • 是否在OS级别或MMU级别实现了页面错误写时复制功能?
  • 如果我调用calloc()分配4GiB的内存,然后在紧密的循环中用一些任意值(比如说,0xFF而不是0x00)初始化它,我的(英特尔)CPU每次写入新页面时都会触及推测边界吗?
  • 最后,如果它是真实的,那么这种影响对现实世界的表现有何影响?

performance memory-management cpu-architecture calloc page-fault

7
推荐指数
1
解决办法
286
查看次数