C#在ActiveRecord中映射结构

时间:2010-02-01 19:21:34

标签: c# struct nhibernate-mapping castle-activerecord

我正在做一个小应用程序来帮助我平衡支票簿。 我正在使用Castle ActiveRecord将对象属性映射到数据库。现在这是问题所在。因为我正在赚钱计划我做了一个结构货币

结构:

public struct Currency
{
    private long amount;
    private CurrencyType currencyType;

    public long Amount
    {
        get { return this.amount; }
        set { this.amount = value; }
    }

    public CurrencyType CurrencyType
    {
        get { return this.currencyType; }
        set { this.currencyType = value; }
    }
}

我要映射的课程:

[ActiveRecord("[Transaction]")]
public class Transaction: HasOwnerModelBase
{
    private Currency amount;
    private Category category;

    [BelongsTo]
    public virtual Category Category
    {
        get { return this.category; }
        set { this.category = value; }
    }

    public virtual Currency Amount
    {
        get { return this.amount; }
        set { this.amount = value; }
    }
}

现在在理想情况下,Currency对象就像一个嵌套对象,因此amount和currencyType是事务表中的两个列。 但它不是嵌套的视觉,因为我希望它像货币结构对象一样。

我不知道我应该给它的货币金额用什么标签,我真的很感激,如果有人可以帮我解决这个问题。

我希望所有这一切都很清楚。

Greatings Duncan

1 个答案:

答案 0 :(得分:2)

以下怎么样?或者我没有得到问题?请注意,我将结构更改为类,因为您需要虚拟成员来生成动态代理,并且您不能在结构上拥有虚拟成员。顺便问一下,为什么不使用自动实现的属性?

public class Currency
{
    [Property]
    public virtual Int64 Amount { get; set; }   

    [Property]
    public virtual CurrencyType CurrencyType { get; set; }
}

[ActiveRecord("[Transaction]")]
public class Transaction: HasOwnerModelBase
{
    [BelongsTo]
    public virtual Category Category { get; set; }

    [Nested]  
    public virtual Currency Amount { get; set; }
}