小编Nic*_*k W的帖子

如何在Fluent NHibernate中映射IDictionary <string,object>?

我希望将用户首选项持久化为名称值对的集合,其中值可以是int,bool或string.

有几种方法可以给这只猫上皮,但我能想到的最方便的方法是这样的:

public class User
{
    public virtual IDictionary<string, object> Preferences { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

用途如下:

user.Preferences["preference1"] = "some value";
user.Preferences["preference2"] = 10;
user.Preferences["preference3"] = true;

var pref = (int)user.Preferences["preference2"];
Run Code Online (Sandbox Code Playgroud)

我不知道如何在Fluent NHibernate中映射这个,虽然我认为这是可能的.

通常,您可以将更简单的Dictionary <string,string>映射为:

HasMany(x => x.Preferences)
    .Table("Preferences")
    .AsMap("preferenceName")
    .Element("preferenceValue");
Run Code Online (Sandbox Code Playgroud)

但是对于一种'对象',NHibernate不知道如何处理它.我想可以创建一个自定义UserType,它将"对象"分解为表示其Type的字符串和表示该值的字符串.我们会有一个看起来像这样的表:

Table Preferences
    userId (int)
    preferenceName (varchar)
    preferenceValue (varchar)
    preferenceValueType (varchar)
Run Code Online (Sandbox Code Playgroud)

并且hibernate映射会这样:

<map name="Preferences" table="Preferences"> 
  <key column="userId"></key> 
  <index column="preferenceName" type="String" />
  <element type="ObjectAsStringUserType, Assembly">
    <column name="preferenceValue" /> 
    <column name="preferenceValueType"/> 
  </element> 
</map> 
Run Code Online (Sandbox Code Playgroud)

我不确定你会如何在Fluent NHibernate中映射它.

也许有更好的方法来做到这一点,或者我应该把它吸掉并使用IDictionary <string,string>.有任何想法吗?

mapping dictionary preferences fluent-nhibernate usertype

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

使用node.js的Azure网站的SSL端口?

我很难获得部署为Azure网站的node.js应用程序来侦听适当的SSL端口(在Azure环境中).

在我控制端口的任何其他环境中提供SSL请求都没有问题,并且工作正常.我不认为这是应用程序代码的问题(使用Express,FYI).

Azure网站似乎将端口80流量从负载均衡器转发到可用的任何端口,该端口在process.env.PORT变量中设置.

process.env尽管已成功将证书加载到给定网站的Azure门户并配置其绑定,但我没有在SSL流量中看到任何相关的等效内容.

我的问题是:我如何配置Azure为端口443上的流量吐出必要的文件描述符?

我读过关于如何在云服务配置一个工人一点点在这里,但它似乎并不适用于Web站点.

作为参考,当我试图收听443或者process.env.PORT,我得到以下错误:

Application has thrown an uncaught exception and is terminated:
Error: listen EACCES
    at errnoException (net.js:901:11)
    at Server._listen2 (net.js:1039:14)
    at listen (net.js:1061:10)
    at Server.listen (net.js:1127:5)
Run Code Online (Sandbox Code Playgroud)

ssl azure node.js azure-web-sites

2
推荐指数
1
解决办法
2930
查看次数