簡體   English   中英

FluentNhibernate映射和結構

[英]FluentNhibernate mapping and struct

我堅信這是一個簡單的問題,在gogle中只有很少的細節,我得到了解決方案等。但是,實際上,我發現沒有什么特別的。

因此,我得到了一個struct(或任何類的類)和一個其中每個字段都具有這種struct類型的類。 我想使用模型在數據庫中創建/使用表,其中每個字段都具有struct這樣的類型。

作為示例struct在這里

public class myStruct
{
    public float value;
    public string description;
}

這里是我要使用的模型

public class FieldSummaryRow
{
    public int Id{ get; set } 
    public myStruct A { get; set; }
    public myStruct B { get; set; }
    public myStruct C { get; set; }
    public class FieldSummaryMap: ClassMap<FieldSummaryRow>
    {
      public FieldSummaryMap()
      {
        Id(x => x.Id);
        Map (x=>x.A);
        Map (x=>x.B);
        Map (x=>x.C);
      }
    }
}

但是我認為由於myStruct映射不正確,它無法像那樣工作。 那么我該如何解決這個問題呢? 還是我myStruct以同樣的方式映射myStruct

從NHibernate的角度來看,我們應該將您的結構視為<component> 這意味着, myStruct A必須有valueAdescriptionA列,而BC必須相同。

請參閱文檔:

這樣的<component> myStruct將像下面的xml片段一樣被映射為末尾:

<class name="FieldSummaryRow" table="...>
    ....

    <component class="myStruct" name="A">
      <property name="value"       column="valueA"       access="field" />
      <property name="description" column="descriptionA" access="field" />
    </component>

    <component class="myStruct" name="B">
    ...

</class>

正如我們在這里看到的(Adam Bar的文章-將后半部分作為Fluent映射的摘要)

我們需要這個:

public class FieldSummaryMap: ClassMap<FieldSummaryRow>
{
    public FieldSummaryMap()
    {
        Id(x => x.Id);
        Component(x => x.A, c =>
        {        
            c.Map(x => x.value).Column("valueA").Access.CamelCaseField();
            c.Map(x => x.description).Column("descriptionA").Access.CamelCaseField();
        }
        Component(x => x.B, c =>
        ...
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM