代码之家  ›  专栏  ›  技术社区  ›  mgamer

NHibernate中的int映射列表

  •  1
  • mgamer  · 技术社区  · 15 年前

    <bag name="Sizes" table="SIZES" order-by="SIZE ASC">
        <key column="OWNER"/>
        <element column="SIZE" type="Int32"/>
    </bag>
    

    2 回复  |  直到 15 年前
        1
  •  1
  •   Sunday Ironfoot    15 年前

    应用程序运行所在的业务域的需求将决定您应该拥有int列表(值类型的集合)还是实体列表。如果有一个好的用例 IList<int> 那就千方百计去争取,让NHibernate相应地映射这个关联。否则就把它拿走。

    我在我的领域模型中经常使用这个。现在我有很多“Twitter应用程序”根据搜索“关键字”索引tweets,所以我将其映射为:

    public class TwitterApplication
    {
        public virtual int Id { get; set; }
        public virtual string ApplicationName { get; set; }
    
        // other properties (snip)
    
        public virtual ISet<string> Keywords { get; set; }
    }
    

    1. 关键字的数量将很小
    2. 我对储存不感兴趣
    3. 查询关键字,只需 同时取回它们, 或者根本没有

    在此基础上,我决定将其映射为字符串集合是合适的。

        2
  •  1
  •   Stefan Steinegger    15 年前

    什么时候? 你的模型中有一个int列表,然后你想这样映射它。你不想在你的模型中写复杂的代码,仅仅因为映射。

    那么,你认为在一个类中有一个int列表有用吗?或者一个guid,enum,double的列表?

    class Graph
    {
      IList<double> Values { get; private set; }
    }
    

    你不觉得有道理吗?