【问题标题】:"an object reference is required to access non-static field"“访问非静态字段需要对象引用”
【发布时间】:2014-06-05 18:19:14
【问题描述】:

我的 WCF 服务实现中有此代码,但我收到此错误 :

 'an object reference is required to access non-static field, method or property    
   System.Data.Linq.DataContext.User.get

如何正确更新用户的位置?代码如下:

public  void UpdateLocation(string usrName, double usrLong, double usrLat)
        {

            var result = (from usr in DataClasses1DataContext.Users
                          where usr.usrName == usrName
                          select usr).Single();
            result.usrLong = usrLong;
            result.usrLat = usrLat;
            DataClasses1DataContext.SubmitChanges();}

【问题讨论】:

    标签: c# sql linq wcf


    【解决方案1】:

    错误消息告诉您所有您需要知道的信息,Users 属性不是静态的,但您按原样调用它。您需要一个 DataClasses1DataContext 的实例来调用该属性:

    using(DataClasses1DataContext context = new DataClasses1DataContext())
    {
       var result = (from usr in context.Users
                              where usr.usrName == usrName
                              select usr).Single();
    }
    

    【讨论】:

      【解决方案2】:

      正如伊恩所说,

      public  void UpdateLocation(string usrName, double usrLong, double usrLat)
      {
          using(DataClasses1DataContext Usercontext = new DataClasses1DataContext())
          {
              var result = (from usr in Usercontext.Users where usr.usrName == usrName select usr).Single();
      
              result.usrLong = usrLong;
              result.usrLat = usrLat;
      
              Usercontext.SubmitChanges();
         }
      }
      

      【讨论】:

      • 投反对票的人!即使伊恩的回答是正确的,OP 通过创建用户实例添加了对他的回答的评论,为了让他清楚我添加了这个答案!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多