Структура отображения C # в ActiveRecord - PullRequest
0 голосов
/ 01 февраля 2010

Я делаю небольшое заявление, чтобы помочь мне сбалансировать мою чековую книжку. Я использую Замок 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 будет действовать как вложенный объект, поэтому сумма и currencyType - это два столбца в таблице транзакций. но это не вложенный объект, так как я хочу, чтобы он действовал как объект структуры валюты.

Я понятия не имею, какой тег я должен дать сумме в валюте, чтобы она работала, я был бы очень признателен, если бы кто-нибудь мог помочь мне решить эту проблему.

Надеюсь, все это ясно.

Гатингс Дункан

1 Ответ

2 голосов
/ 01 февраля 2010

А как насчет следующего? Или я не получил вопрос? Обратите внимание, что я изменил структуру на класс, потому что вам нужны виртуальные члены для динамического создания прокси, и вы не можете иметь виртуальных членов в структурах. Кстати, почему бы вам не использовать автоматически реализованные свойства?

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; }
}
...