[英]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
必須有valueA和descriptionA列,而B
和C
必須相同。
請參閱文檔:
這樣的<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.