解决方案 »

  1.   

    需要让 ctx 对象在函数调用的上层。
      

  2.   

    解决了,自己封装了一个公共的基方法,
    /// <summary>
            /// 获取单条
            /// </summary>
            /// <param name="wherelambda"></param>
            /// <param name="action">无返回值委托</param>
            /// <returns></returns>
            public TEntity Get(Expression<Func<TEntity, bool>> wherelambda, Action<TEntity> action)
            {
                try
                {
                    using (var ctx = LINQ_CONTEXT.GetContext())
                    {
                        var entity = ctx.GetTable<TEntity>().Where(wherelambda).FirstOrDefault();
                        action(entity);
                        return entity;
                    }
                }
                catch (Exception ex)
                {
                    log4net.LogManager.GetLogger(GetType()).Error(string.Format("Get {0}:", typeof(TEntity).ToString()), ex);
                    return null;
                }            //调用方式
                //var entity = base.Get(m => m.Guid == guid, m =>
                //{
                //    m.Staff = m.Staff;//赋值给外键表
                //    m.Staff1 = m.Staff1;赋值给外键表
                //});
            }