从两个表地图领域创造一个单一的实体(Map fields from two tables to cr

2019-10-30 06:44发布

我工作的一个功能,增加对每一个客户来定义一个定制的登记表帐户的能力,我在创建对象的一个​​我的功能NHibernate映射碰上有点路障。

这里涉及两个表[RegistrationField][AccountRegistrationField] [RegistrationField]包含所有可用的以及关于如何渲染领域的一些信息来接(例如,它应该是一个文本框,选择框或复选框)字段的静态列表。 [AccountRegistrationField]包含已选择用于每个字段帐户以及有关字段的任何帐户的特定信息。 该表存储的字段应该显示的顺序,如果选择一个字段的默认值,并应显示该字段的标签。

两个表的基本结构是:

[RegistrationField]
fieldID (PK, int, not null)
fieldName (varchar(50), not null)
fieldType (varchar(50), not null)
htmlID (varchar(50), not null)

[AccountRegistrationField]
ID (PK, int, not null)
accountID (FK, int, not null)
fieldID (FK, int, not null)
isRequired (bit, not null)
priority (int, not null)
label (varchar(50), not null)
defaultValue (varchar(50), not null)

我想这样做的是创建一个对象来表示数据[AccountRegistrationField]但也包含了一对夫妇领域[RegistrationField] 对象会是这个样子:

public class UserRegistrationField
{
    public virtual int ID { get; set; } //from AccountRegistrationField
    public virtual int AccountID { get; set; } //from AccountRegistrationField
    public virtual string DefaultValue { get; set; } //from AccountRegistrationField
    public virtual int FieldID { get; set; } //from AccountRegistrationField
    public virtual string HtmlID { get; set; } //from RegistrationField
    public virtual bool IsRequired { get; set; } //from AccountRegistrationField
    public virtual string Label { get; set; } //from AccountRegistrationField
    public virtual int Priority{ get; set; } //from AccountRegistrationField
    public virtual string FieldType { get; set; } //from RegistrationField
}

SQL查询给我我想要的是:

SELECT ar.id
    ,ar.accountID
    ,ar.defaultValue
    ,ar.fieldID
    ,rf.htmlID
    ,ar.isRequired
    ,ar.label
    ,rf.fieldType
FROM AccountRegistrationFields ar
INNER JOIN RegistrationFields rf ON rf.fieldID = ar.fieldID
WHERE ar.accountID = @AccountID
ORDER BY ar.priority

但我真的不知道如何使用功能NHibernate给我同样的结果以百度地图这一点。

任何想法我怎么能做到这一点,而不必存储从我所需要的值[RegistrationField][AccountRegistrationField]

Answer 1:

您可以使用连接来实现这一目标。

我使用XML,但相当于流利的方法可能会称为Join



文章来源: Map fields from two tables to create a single entity