试图获取/设置记录

时间:2013-08-29 17:53:40

标签: c# nhibernate

我在获取和设置值方面遇到了问题,因为我在代码中引入了第三个方面。

以前我会这样做以获取/设置在记录中:

public virtual string MyString { get; set;}

然后在我的部分:

public string MyString
{
    get { return Record.MyString; }
    set { Record.MyString = value; }
}

并且NHibernate会将我的值保存在数据库中(显然,为简洁起见,此处未提供其他代码)。

现在我正在尝试使用列表执行复选框。我有一个复选框:

public class MyPart : ContentPart<MyPartRecord>
{
    public MyPart()
    {
        MyList = Enum.GetValues(typeof(MyEnum))
            .Cast<MyEnum>().Select(x =>
        {
            return new SelectListItem { Text = x.ToString().ToUpper(), 
                Value = ((int)x).ToString() };
         }).ToList();
    }

    public IList<SelectListItem> MyList { get; set; }
    private string myCheckBox;

    // Record class contains the following commented code: 
    // public virtual string MyCheckBox { get; set;}

    // Trying to do this now here in MyPart class:
    public string MyCheckBox
    {
        get
        {
            if (!string.IsNullOrEmpty(myCheckBox))
                return myCheckBox;
            // Tried the following commented code to get value:
            // Record.MyCheckBox = myCheckBox;
            return string.Join(",", MyList.Where(x => x.Selected)
                .Select(x => x.Value).ToArray());
        }
        set
        {
            myCheckBox = value;
            // Tried the following commented code to set value:
            // Record.MyCheckBox = myCheckBox;
        }
    }
}

我只是不知道如何在这种情况下分配值(将myCheckBox设置为MyCheckBox。它在数据库中保存为null。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

在我看来,您将隐藏virtual的基本MyCheckBox实现。

我认为你宁愿override基地:

public override String MyCheckBox
{
    get
    {
        if (!string.IsNullOrEmpty(myCheckBox))
            return myCheckBox;
        // Tried the following commented code to get value:
        // Record.MyCheckBox = myCheckBox;
        return string.Join(",", MyList.Where(x => x.Selected)
            .Select(x => x.Value).ToArray());
    }
    set
    {
        myCheckBox = value;
        // Tried the following commented code to set value:
        // Record.MyCheckBox = myCheckBox;
    }
}

从而成为变量而不是混淆它?

答案 1 :(得分:0)

我最终摆脱了这个部分,只留下了一条记录 - 这让我可以在一个视图模型中执行getset,这样做效果更好(并且不那么令人困惑) )。