C# 试图获得/创造记录

C# 试图获得/创造记录,c#,nhibernate,C#,Nhibernate,我在获取和设置值时遇到问题,因为我在代码中引入了第三个方面 以前,我会这样做,以便在记录中获取/设置: public virtual string MyString { get; set;} 在我看来: public string MyString { get { return Record.MyString; } set { Record.MyString = value; } } NHibernate会将我的值保存在DB中(显然,为了简洁起见,这里不提供我的其他代码) 现

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

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

public virtual string MyString { get; set;}
在我看来:

public string MyString
{
    get { return Record.MyString; }
    set { Record.MyString = value; }
}
NHibernate会将我的值保存在DB中(显然,为了简洁起见,这里不提供我的其他代码)

现在,我正在尝试用一个列表做一个复选框。我有一个复选框:

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;
        }
    }
}
公共类MyPart:ContentPart
{
公共事务部()
{
MyList=Enum.GetValues(typeof(MyEnum))
.Cast().Select(x=>
{
返回新的SelectListItem{Text=x.ToString().ToUpper(),
Value=((int)x).ToString()};
}).ToList();
}
公共IList MyList{get;set;}
私有字符串myCheckBox;
//记录类包含以下注释代码:
//公共虚拟字符串MyCheckBox{get;set;}
//现在在MyPart类中尝试执行此操作:
公共字符串MyCheckBox
{
得到
{
如果(!string.IsNullOrEmpty(myCheckBox))
返回myCheckBox;
//尝试使用以下注释代码获取值:
//Record.MyCheckBox=MyCheckBox;
返回string.Join(“,”,MyList.Where(x=>x.Selected)
.Select(x=>x.Value).ToArray();
}
设置
{
myCheckBox=值;
//尝试使用以下注释代码设置值:
//Record.MyCheckBox=MyCheckBox;
}
}
}
我只是不知道在这种情况下如何分配值(获取/设置
myCheckBox
myCheckBox
。它在数据库中被保存为null


提前感谢您的帮助。

在我看来,您可能隐藏了
MyCheckBox
的基本
virtual
实现

我认为您更愿意
覆盖
基础:

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

因此成为变量而不是混淆它?

我最终只是摆脱了部分,只保留了一条记录-这允许我在视图模型中执行
get
set
,效果更好(也不那么混乱).

Try
Record.MyCheckBox=value
@DStanley我几天前尝试过:)由于
公共虚拟字符串MyCheckBox{get;set;}
位于单独的记录类中,因此重写将不起作用。这是一个零件类。好的,现在建议使用
Record.MyCheckBox
。我没听懂那部分。所以在某个地方有一个
部分
类的实例。那么与
记录的联系是什么?
部分
类是否应该引用一个
记录
对象,您可以使用该对象执行类似于
myRecord.MyCheckBox=MyCheckBox
的操作?将本地成员分配给实例成员?我输入错误。它应该是
MyPartyRecord
连接是
public类My-Part:ContentPart{…}
。我在一开始展示了它通常是如何完成的(这是有效的),它只是将
myCheckBox
转换成
myCheckBox
,这让我感到困惑。