.NET编译生产的文件叫程序集Assembly,就是代码物理的集合,命名空间用来逻辑归类代码。
后端开发   java  python  php   .net  c  c++ c#
移动开发  HTML5  Android  IOS  WP
前端开发  web前端  Flash  HTML5  JavaScript  U3D游戏引擎开发   COCOS2D-X开发
测试   测试工程师  游戏测试  硬件测试  测试开发  黑盒测试  白盒测试  灰盒测试
运维    运维工程师  网络工程师  系统工程师  WEB安全  网络安全  CDN
数据库管理员 MySQL  SQLServer  Oracle  DB2  MongoDB  ETL  Hive  数据仓库
asp.net core,docker,vue,微服务   技术方向
备份数据库
RESTORE DATABASE SOADB             --数据库名
FROM  DISK = N'C:\SOADB_CC.bak' with replace,--.bak文件路径
NOUNLOAD,  STATS = 10          
Ctrl +  G   任务快速查找
Foreground="Red"   WPF labal的字变成红色
bool   boolean   区别
list   List   区别
添加TFS的凭据   控制面板-》凭据管理器
远程桌面连接    mstsc
dreamspark
wcf     
web api   
webserver
页面显示为list类型的数据  为了后期能够获取到数据
svn提交的时候要提交csproj文件  不然项目中不包含
select * from udt_dict_Menus where Menu_Desc like '%维修%'   模糊查询
NPOI的导入导出    文件的上传下载
一个 架构师 构架了一个框架,约束框架使用者只能使用规定的结构来进行二次开发。
执行任何操作前,必须先svn update,再执行svn commit
绿色对号代表正常
红色感叹号代表修改
黄色感叹号代表冲突
灰色对号代表只读文件夹
红色差号代表删除
黄色锁代表被锁定
蓝色加号代表新增
灰色减号代表被忽略
问号代表未修改
对于label的显示用的是Content    TextBox的显示是用Text
下来框选择的序号  SelectedIndex  从上往下排列  cmbxPart.SelectedIndex = 0;说明选择就是第一个
拼接时要注意逗号【D层中间可能少逗号】
光标定位到当前项目  工具 选项 项目和解决方案  常规
一个查询的方法  返回的结果类型为该实体类的话   则需进行转换【仔细瞅瞅】
HTTP请求未经客户端身份验证方案"Anonymous"授权,从服务器收到身份验证表头为"",
将文件applicationhost.config最后的false改为true
   <location path="I_MES_MM.BS_MM.WCF">
        <system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="true" />
                    <windowsAuthentication enabled="true" />
                </authentication>
            </security>
        </system.webServer>
    </location>

Grid 中可以包含有StackPanel
StackPanel
GroupBox 中可以包含有Grid
UserControl
新添加的文件  csproj【每次必须提交】
验证的方法类型为bool   返回值是true 
获取到登入的用户人
I_MES.BusinessCommon.CommonCls.C_StaticManagement.StrLoginUserDesc;
获取到服务器的时间
NowDateTime.getDateTime();
事件精确到时分秒
           public string StrMoveApplyTime
        {
            get
            {
                return _moveapplytime.ToString("yyyy-MM-dd HH:mm:ss");
            }
         }
       
对于数字的验证
                double temp;
                if (!double.TryParse(txtQty.Text.Trim(), out temp))
                {
                    MsgBox.Show("申请数量必须为数字!");
                    return;
                }
                if (temp <= 0)
                {
                    MsgBox.Show("申请数量必须大于0!");
                    return;
                }
 
model(VM)   idal  sqlserverdal  dalfactory    wcf.【.cs中写接口  .svc实现接口方法】  bll  mm [(Server  References【MM层中的Server】更新服务【底层方法和Model层改变都需要更新】)]                          WCF写完方法后就可以更新服务方法
    
添加备用字段
数据的真删假删    有一个字段来表示 0显示 1不显示
存名字时要存字段ID   避免相同名字
使用MVVM架构【方便前台到底层的转换】
就近原则
数据库建表前要看原型图和帮助手册
将两条数据插入到一个字段中    重新定义一个新字段(Define_1)   (Define_1)  values(1)     或者 (Define_1)  values(2)
GridView显示不出来数据  可能是因为字段名字的绑定有误
往数据库插入数据时  要实例化该对象
对于是Decimal类型的字段   显示在前台页面有美元符号  在VM层中需要将其转换
  public decimal【对于decima(18,3)字段要将字段后默认留几位小数】 MinStore
        {
            set { _minstore = value; }
            get { return _minstore; }
        }
        public double DouMinStore
        {
            get
            {
                return Convert.ToDouble(MinStore);
            }
        }

对于是Bit类型的字段   在VS中将会用BOOL类型来表示  但转换到数据库中将是Bit(用0和1来表示)  在ServerDAL(对方法的实现)层要做转换【Model层的转化】
           if (model.Batch)
            {
                strSql.Append("" + 1 + ",");
            }
            else
            {
                strSql.Append("" + 0 + ",");
            }

 this.Close();    关闭窗体
用动软代码生成器生成SqlServerDAL层代码时【对IDAL接口层方法实现】  使用【基于企业库SQL方式】类名是M层 
    Database db = DatabaseFactory.CreateDatabase("MM_DATA_LINK");这是在SqlServerDAL层中的获得数据列表方法
 public DataSet GetList(string strWhere) 手动添加("MM_DATA_LINK");要链接到配置文件去

两种绑定数据格式的区别
MainDataGrid.DataSource = list;           翻译后的类
MainDataGrid.BindDataSoruce(ListVModels, UnCfgs);
全局变量引入的命名空间
//全局变量的引入【用来将页面获取到的值存入实体后一起传入到后台的数据库】
using System.Collections.ObjectModel;     ObservableCollection
区别???????
List<VM_udt_mm_Contract_Entry> ListVModels = new List<VM_udt_mm_Contract_Entry>();
ObservableCollection<VM_v_Machine_DailyPlan_Detail> VModels = new  ObservableCollection<VM_v_Machine_DailyPlan_Detail>();
VM_v_Machine_DailyPlan_Detail VModel = new VM_v_Machine_DailyPlan_Detail();
//实例化服务引用    用来调用来自WCF层中的方法
 ServiceReference_CCMES_BS_MM_BM.IService_XCMES_BS_MM_BMClient ws = new ServiceReference_CCMES_BS_MM_BM.IService_XCMES_BS_MM_BMClient();
ws.方法名(WCF中II.cs用来写接口  I.svc用来写实现接口的方法  然后点击MM层中的服务方法  更新配置
将方法名复制到I.svc(此中用来实现的II.cs中的接口,返回的BLL层中的方法,将鼠标放在方法名上,可以显示到BLL层中对应的方法)中,用来找到BLL层的方法
            //获取前台文本框的值
              if (!string.IsNullOrEmpty(strcmbMalertMax))
                {
                    strWhere += "and MaterielCategory1 like '%" + strcmbMalertMax + "%'";
                }
                else if (!string.IsNullOrEmpty(strcmbMalertMin))
                {
                    strWhere += "and MaterielCategory2 like '%" + strcmbMalertMin + "%'";
                }
 
 
 
//转化为Model层对象     //转化为model层  往model层中添加数据
 private ServiceReference_CCMES_BS_MM_BM.M_udt_mm_Materiel_Data ConvertModel()
        {
               //实例化model层对象
            ServiceReference_CCMES_BS_MM_BM.M_udt_mm_Materiel_Data model = new ServiceReference_CCMES_BS_MM_BM.M_udt_mm_Materiel_Data();
               //此处的VModle对应的全局变量中的    public VM_udt_mm_Materiel_Data VModel;
               model.AutoID = VModel.AutoID;           
            return model;
        }
 
查询的方法
    private void QueryData()
        {
            try
            {
                string strWhere = " 1 = 1";

                //全局变量中要实例化这个数据库的VM对象
                if (ListVModels != null)
                {
                    ListVModels.Clear();
                }
                                //返回的方法是   得到一个对象实体
                var list = ws.W_udt_dict_Products_GetModelList(strWhere).ToList();
                foreach (var item in list)
                {
                      //因为要讲后台数据显示在前台  所以需要转化为VM
                    ListVModels.Add(ConventVM(item));
                }
                C_GridColumnConfigs UnCfgs = new C_GridColumnConfigs();
                UnCfgs.AddReadOnlyColumn("Prod_Id", "Prod_Id");
                UnCfgs.AddReadOnlyColumn("BarCode", "BarCode");
                UnCfgs.AddReadOnlyColumn("Specification", "Specification");
                UnCfgs.AddReadOnlyColumn("CC_Code", "CC_Code");
                UnCfgs.AddReadOnlyColumn("Model", "Model");
                UnCfgs.AddReadOnlyColumn("ClassABC", "ClassABC");
 
                MainDataGrid.BindDataSoruce(ListVModels, UnCfgs);
            }
            catch (Exception ex)
            {
                MsgBox.Show("查询异常:" + ex.ToString());
                Log.Write(ex.ToString()); //日志文件位置 C:\MES\Log
            }
        }
 

删除的方法
  private void btnDelete_Click(object sender, RoutedEventArgs e)
        {
            //判断文本内容是否为空
            if (MainDataGrid.ActiveDataItem != null)
            {
                if (MessageBox.Show("确定要删除该条信息吗?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes)
                {
                    return;
                }
                    //实例化VM中对应的实体
               VM_udt_mm_ProjectDefinition VModels = new VM_udt_mm_ProjectDefinition();
                     //VM将得到的数据进行转化
               VModels = MainDataGrid.ActiveDataItem as VM_udt_mm_ProjectDefinition;
                                                                对应表中的主键
                if (bll.B_udt_mm_ProjectDefinition_Delete(VModels.GID))
                {
                    MessageBox.Show("删除成功!");
                }
                else
                {
                    MessageBox.Show("删除失败!");
                }
                QueryData();
            }
            else
            {
                MessageBox.Show("请选中所要删除的行");
                return;
            }
        }
 
 
标点符号往前拼
框架
架构:
设计模式:眼睛在最高位置
每个缓存都是一个特定功能,最后留有备用字段
尽量不要使用全局变量  且使用完之后恢复原始值当用全局变量做判断的时候一定要在用完之后变为初始值
项目上线初期,必须备份每天数据

DLL  不应该有写死的判断(处除了公用)
对于List集合的修改  拼接成一个大的Sql  一次性修改,避免多次打开关闭数据库
基础数据可以使用缓存 Dictionary
Cache写方法,返回类型为SimpleModel。SimpleModel查询的条件,返回类型为ModelInfo。ModelInfo
进程内的缓存可能造成数据不一致
缓存  穿透  击穿  雪崩

写同一命名的属性
编程思想:模块化开发【IIS服务的组件开发】
开发库  测试库  正式库   一定要有数据的迁移  避免冗余数据
将一个对象(A)做为另一个对象(B)的字段  那么另一个对象(B)就有(A)的全部字段属性
BuildAll  生成目录
UI        快速启动框架   获取前台对象集合(List<Object>) 并判断,验证对象
BLL       业务逻辑层     将对对象的操作集合到一个方法中 使用if判断对对象进行相应的操作赋值
DAL       每一张表一个类【增 删 改 查】    每一张表都建一个类
DataBase  数据库连接设置【SQL Server   Oracle】
Entity    实体层的Model    尽可能少使用全局变量 避免引用过多
DataTable  DataTable Varliazer    
var Location = IMES.Entity.Cache.GetPA_Storage_Location().GetAllList();
var newLocation = Location.Where((x, i) => Location.FindIndex(z => z.Des == x.Des) == i).ToList();  //去重
cmbBigMateriel.BindingDefaultChoose(IMES.Entity.Cache.GetPA_ProductFamily().EqByKey("1").OrderBy(r => r.ID).GroupBy(r => new { r.ID, r.Des }).Select(r => new ModelInfo() { ID = r.Key.ID, Code = r.Key.Des, Des = r.Key.Des }).ToList());去重 cmbBigMateriel.SelectedValue = Umodel.MaterialsBigId;
wcftestclient 
List<>  泛型操作  FandAll  Lamd表达式 FandAll(r=>r.ID==1||r.Code=="525025")
对于不需要实时更新的数据,可以一次全查出来,放在一个List<>集合中,然后前台页面根据条件查询List<>集合的数据
1  实体类扩展字段
2  根据对应的ID查询出对应的描述返回到页面
Adminstar  JPKLW$0013   cnwba$2570
应用集群  分布式服务  WebService  不同的底层服务放在不同的服务器上 通过WebService调用
一个解决方案中配置文件只有一个  app.config  web.config???????
系统的位数与引用的dll相同(32位 64位)
vs运行的位数选择也要相同,有时可能不能用any cpu
类库下的类空间直接到类库!!!!!!
(Func<ModelInfo, bool> predicate)??????
public List<T> FindAll(Predicate<T> match);
//参数写法
public bool Update(udt_mm_WFCurrent model)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("update udt_mm_WFCurrent set ");
            strSql.Append("Key_ID=@Key_ID,");
            strSql.Append("PU_ID=@PU_ID,");
            strSql.Append("WF_Config_ID=@WF_Config_ID");
            strSql.Append(" where Key_ID=@Key_ID and PU_ID=@PU_ID");
            SqlParameter[] parameters ={
     new SqlParameter("@Key_ID", SqlDbType.VarChar,50),
     new SqlParameter("@PU_ID", SqlDbType.Int,4),
     new SqlParameter("@WF_Config_ID",SqlDbType.Int,4)};
            parameters[0].Value = model.Key_ID;
            parameters[1].Value = model.PU_ID;
            parameters[2].Value = model.WF_Config_ID;
            int rows = DBFactory.Default.ExecuteSql(strSql.ToString(), parameters).Integer;
            if (rows > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
 
    List<SqlParameter> para = new List<SqlParameter>()
                {
                    new SqlParameter("number",  SqlDbType.VarChar,30){ Value = number, Direction = ParameterDirection.Input},
                     new SqlParameter("p_rcv_num",  SqlDbType.VarChar,30){ Value = p_rcv_num, Direction = ParameterDirection.Input},
                      new SqlParameter("p_po_num",  SqlDbType.VarChar,30){ Value = p_po_num, Direction = ParameterDirection.Input}
                };