代码之家  ›  专栏  ›  技术社区  ›  David Moye

在EF4中,有没有一种方法可以让未映射的属性穿过导线?

  •  1
  • David Moye  · 技术社区  · 15 年前

    我有一个自定义字段,我已经将它添加到了shared.cs文件中的一个ef实体中,如下所示:

    public partial class Content
    {
        public int Test = 5;
    }
    

    在客户端,同一类的onCreated处理程序如下所示:

    partial void OnCreated()
    {
        this.Test = 42;
    }
    

    我为服务器上的上下文向savingchanges事件添加了一个事件处理程序,如下所示:

    partial void OnContextCreated()
    {
        this.SavingChanges += (sender, e) =>
        {
            foreach (object o in GetChangedEntities())
            {
                if (o is Content)
                {
                    // Break to see what the value of Test is;
                }
            }
        }
    }
    

    当我在注释处中断时(这实际上不是注释,我的代码:),测试的值总是5。事实上,我似乎无法在客户机的任何地方将它设置为42,并且让这个值成为服务器的值。

    我已经在各处设置了断点,并且在客户端上的值肯定被设置为42。是我做错了什么,还是这种行为不受支持?顺便说一句,我也试过将它作为一个属性而不是字段——以防万一。

    1 回复  |  直到 15 年前
        1
  •  2
  •   David Moye    15 年前

    我需要将我的属性/字段标记为[数据成员],如下所示:

    public partial class Content
    {
        [DataMember]
        public int Test = 5;
    }
    

    然后将它从shared.cs文件移到服务器项目中的customproperties.cs(或类似文件)文件中,以避免出现多个delcaration。现在它正好穿过电线。