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

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

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

Великий Дункан


person Duncan Roosma    schedule 01.02.2010    source источник


Ответы (1)


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

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; }
}
person Daniel Brückner    schedule 01.02.2010
comment
Ну, виртуальные вещи, которые я знаю плохо, но не очень важны для этого примера. свойство auto заключается в том, что на работе мы все еще должны использовать vs2005, поэтому еще не привыкли;) вложенность - действительно хорошая идея, но я уже с этим справляюсь. Я не могу его сейчас проверить, но я почти уверен, что объект, получаемый, когда я извлекаю транзакцию из базы данных, не является объектом валюты. если так. я действительно глуп - person Duncan Roosma; 01.02.2010
comment
Это должен быть экземпляр вашего класса Currency или динамического прокси, производного от Currency, в зависимости от того, используете ли вы прозрачную отложенную загрузку или нет. - person Daniel Brückner; 02.02.2010
comment
Я попробую это завтра, когда смогу проверить это должным образом. буду обновлять спасибо за помощь так проездом! - person Duncan Roosma; 02.02.2010
comment
+1 Вложенный - лучший способ. Кстати, я не думаю, что компоненты проксируются. - person Mauricio Scheffer; 02.02.2010