-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.xml
98 lines (86 loc) · 10.5 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Lee's Blog</title>
<link>https://ev1si0n.github.io/</link>
<description>Recent content on Lee's Blog</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-cn</language>
<copyright><a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="noopener">CC BY-NC 4.0</a></copyright>
<lastBuildDate>Tue, 09 Aug 2022 18:08:45 +0800</lastBuildDate><atom:link href="https://ev1si0n.github.io/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>利用反射将两个实体数据相互转换</title>
<link>https://ev1si0n.github.io/post/%E5%88%A9%E7%94%A8%E5%8F%8D%E5%B0%84%E5%B0%86%E4%B8%A4%E4%B8%AA%E5%AE%9E%E4%BD%93%E6%95%B0%E6%8D%AE%E7%9B%B8%E4%BA%92%E8%BD%AC%E6%8D%A2/</link>
<pubDate>Tue, 09 Aug 2022 18:08:45 +0800</pubDate>
<guid>https://ev1si0n.github.io/post/%E5%88%A9%E7%94%A8%E5%8F%8D%E5%B0%84%E5%B0%86%E4%B8%A4%E4%B8%AA%E5%AE%9E%E4%BD%93%E6%95%B0%E6%8D%AE%E7%9B%B8%E4%BA%92%E8%BD%AC%E6%8D%A2/</guid>
<description>利用反射将两个实体数据相互转换 在实现客户的一个需求时,需要将ORM实体和Entity实体完成转换,并最终调用方法映射到数据库中。理论上最简单但是复杂的办法是进行遍历。这里使用了反射对数据实体进行自动映射:
创建ConvertModel方法,其中T1为源Entity,T2为要转换的Entity
public static List&lt;T2&gt; ConvertToNewModel&lt;T1, T2&gt;(List&lt;T1&gt; list) { var t2 = new List&lt;T2&gt;(); foreach (var item in list) { T2 model = default(T2); model = Activator.CreateInstance&lt;T2&gt;(); System.Reflection.PropertyInfo[] pi1 = typeof(T1).GetProperties(); System.Reflection.PropertyInfo[] propertys = model.GetType().GetProperties(); for (int i = 0; i &lt; pi1.Count(); i++) { propertys[i].SetValue(model, pi1[i].GetValue(item, null), null); } t2.Add(model); } return t2; } 然后在业务代码中调用此方法
var newlist = ConvertModel.ConvertToNewModel&lt;I_DRC_DI_ADI_PATIENT_TREAT_INFO, I_WS_DI_PATIENT_TREAT_INFO&gt;(list.RespContent); 完成对应数据转换</description>
</item>
<item>
<title>EFCore修改默认schemaName</title>
<link>https://ev1si0n.github.io/post/efcore%E4%BF%AE%E6%94%B9%E9%BB%98%E8%AE%A4schemaname/</link>
<pubDate>Fri, 05 Aug 2022 16:02:45 +0800</pubDate>
<guid>https://ev1si0n.github.io/post/efcore%E4%BF%AE%E6%94%B9%E9%BB%98%E8%AE%A4schemaname/</guid>
<description>EF Core修改默认schema name
在处理一个需求时,需要将数据插入到我们的一个新的数据库的表中,遇到了一个问题,DbContext在执行插入动作时,提示相关表不存在。如图:
查看EF生成的SQL,可以看到默认使用了dbo这个用户
在Stack Overflow上查到了相关原因为:
For those using Entity Framework 6, just use the HasDefaultSchema method:
public class Contexto : DbContext { public DbSet&lt;User&gt; Users { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.HasDefaultSchema(&#34;MyDefaultDbSchema&#34;); } } 在重写OnModelCreating()方法时,修要修改DefaultSchema。
我们在代码里修改后,看到dbo用户已经修改为SJSB用户:
数据也成功插入相关表中:</description>
</item>
<item>
<title>Kubernetes 从入门到进阶实战教程【转】</title>
<link>https://ev1si0n.github.io/post/kubernetes/</link>
<pubDate>Fri, 08 Jul 2022 16:19:14 +0800</pubDate>
<guid>https://ev1si0n.github.io/post/kubernetes/</guid>
<description>作者:oonamao 毛江云,腾讯 CSIG 应用开发工程师 原文:来源腾讯技术工程,https://tinyurl.com/ya3ennxf
写在前面 笔者今年 9 月从端侧开发转到后台开发,第一个系统开发任务就强依赖了 K8S,加之项目任务重、排期紧,必须马上对 K8S 有概念上的了解。然而,很多所谓“K8S 入门\概念”的文章看的一头雾水,对于大部分新手来说并不友好。经历了几天痛苦地学习之后,回顾来看,K8S 根本不复杂。于是,决心有了这一系列的文章:一方面希望对新手同学有帮助;另一方面,以文会友,希望能够有机会交流讨论技术。
本文组织方式:
1. K8S 是什么,即作用和目的。涉及 K8S 架构的整理,Master 和 Node 之间的关系,以及 K8S 几个重要的组件:API Server、Scheduler、Controller、etcd 等。 2. K8S 的重要概念,即 K8S 的 API 对象,也就是常常听到的 Pod、Deployment、Service 等。 3. 如何配置 kubectl,介绍kubectl工具和配置办法。 4. 如何用kubectl 部署服务。 5. 如何用kubectl 查看、更新/编辑、删除服务。 6. 如何用kubectl 排查部署在K8S集群上的服务出现的问题
I. K8S 概览 1.1 K8S 是什么? K8S 是Kubernetes的全称,官方称其是:
Kubernetes is an open source system for managing containerized applications across multiple hosts. It provides basic mechanisms for deployment, maintenance, and scaling of applications.</description>
</item>
<item>
<title>让人有点困惑的委托</title>
<link>https://ev1si0n.github.io/post/%E4%BB%A4%E4%BA%BA%E6%9C%89%E7%82%B9%E5%9B%B0%E6%83%91%E7%9A%84%E5%A7%94%E6%89%98/</link>
<pubDate>Wed, 29 Jun 2022 19:14:45 +0800</pubDate>
<guid>https://ev1si0n.github.io/post/%E4%BB%A4%E4%BA%BA%E6%9C%89%E7%82%B9%E5%9B%B0%E6%83%91%E7%9A%84%E5%A7%94%E6%89%98/</guid>
<description>关键词 delegate
通常来说调用方法方式如下:
//Person类中定义了如下方法 public int a (string input) { return input.length; } 常规的调用方法如下:
Person p = new Person(); int length = p.a(&#34;test&#34;); 使用委托调用(此时参数的名称可不必匹配,但参数类型和返回值必须匹配):
Person p = new Person(); delegate int DelWith(string s);//声明委托 var d = new DelWith(p.a); int length = d(&#34;test&#34;); 可以理解为委托是将方法作为参数进行传递的一种方法,其好处是支持不同线程的异步操作。</description>
</item>
<item>
<title>List.Foreach一点小九九</title>
<link>https://ev1si0n.github.io/post/list.foreach%E4%B8%80%E7%82%B9%E5%B0%8F%E4%B9%9D%E4%B9%9D/</link>
<pubDate>Thu, 23 Jun 2022 11:43:45 +0800</pubDate>
<guid>https://ev1si0n.github.io/post/list.foreach%E4%B8%80%E7%82%B9%E5%B0%8F%E4%B9%9D%E4%B9%9D/</guid>
<description>在排查界面查询慢时,查看日志,发现抛出了异常
var jianyan = i_ODS_JianYanSQYZList.Where(o =&gt; o.JIUZHENYWID == yizhujl.BINGRENZYID &amp;&amp; o.YIZHUID == yizhujl.YIZHUID).FirstOrDefault(); 这里会提示未将对象引用到对象的实例,开始时候以为是LINQ表达式写的有问题,其实是i_ODS_JianYanSQYZList这个list里存在为null的数据。因此抛出异常。
resp.RespContent.JianYanBGList.ForEach(o =&gt; { o.JianYanBGMXList = jianYanBGMXList.Where(p =&gt; p.BAOGAODID == o.BAOGAOID).ToList(); o.JianYanSQD = jianYanSQDList.Where(p =&gt; p.TIAOMA == o.TIAOMA &amp;&amp; req.ReqsContent.MPIList.Contains(p.MPI)).FirstOrDefault(); i_ODS_JianYanSQYZList.Add(o.JianYanSQD); });//此处这个LINQ表达式其实是有问题的 跟踪业务代码会发现i_ODS_JianYanSQYZList这个list,在add的时候,由于使用了Foreach,则会根据JianYanBGList数量去Add,此处就会出问题,将为null的数据添加到i_ODS_JianYanSQYZList中,然后引发后续的错误</description>
</item>
<item>
<title>构造函数详解</title>
<link>https://ev1si0n.github.io/post/%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E8%AF%A6%E8%A7%A3/</link>
<pubDate>Mon, 20 Jun 2022 17:16:45 +0800</pubDate>
<guid>https://ev1si0n.github.io/post/%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E8%AF%A6%E8%A7%A3/</guid>
<description>前两天,在复习.net相关基础的时候,恰巧看到了一片关于构造函数的文章,有很多平时没有注意到的地方。特记录下来。
一、构造函数的定义 C#中构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与类相同的名称,它通常初始化新对象的数据成员。不带参数的构造函数称为“默认构造函数”。 无论什么时候,只要使用new运算符实例化对象,并且不为 new 提供任何参数,就会调用默认构造函数。除非类是静态的,否则C#编译器将为无构造函数的类提供一个公共的默认构造函数,以便该类可以实例化。默认构造函数:public 类名(){}
构造函数可分为:实例构造函数,静态构造函数,私有构造函数(下面会详细介绍)
二、构造函数时的注意事项 构造函数没有返回值(void也不需要) 一个类中可以有多个构造函数,可根据其参数个数,参数顺序,参数类型的不同来区分它们,这称作构造函数的重载 构造函数的命名必须和类名相同 调用子类的构造函数时会先调用父类的无参构造函数 通常使用构造函数来进行类中字段的赋初值 构造函数不能直接被调用,必须通过关键字new在创建对象时自动调用 当一个类没有定义任何构造函数时,C#编译器会自动为其生成一个默认的隐式无参构造函数 如果一个类中定义了有参构造函数,实例化时需要调用无参构造函数,这时我们就必须定义一个显式无参数构造函数,否则运行会报错
三、构造函数与一般函数的区别 1.声明方式不同
构造函数: [访问修饰符] 类名(参数列表){函数主体}
public class1(int a) { } 一般函数: [访问修饰符] 返回类型 方法名(参数列表){函数主体}
public int class2(int a) { } 2.调用方式不同
构造函数:在类实例化时调用 一般函数:在类实例化后,必须手动调用
四、构造函数的作用 当需要给一个类中的字段进行初始化时,第一种:实例化后手动给属性赋值;第二种实例化时直接把参数放进去自动给属性赋值,显然第二种简单省事。下来我们一起看看两种方法:
第一种:
class Program { static void Main(string[] args) { Student stu = new Student(); stu.Id = 1807; stu.Name = &#34;王麻子&#34;; stu.Sex = &#34;男&#34;; stu.Score = 88.6; Console.</description>
</item>
</channel>
</rss>