杂记
// 串联字符串数组的所有元素,其中在每个元素之间使用指定的分隔符。 string.join(",",数组或集合)
//表示可变字符字符串。此类不能被继承。 StringBuilder sb = new StringBuilder(); sb.Append("hello,kugou");
C#中获取配置文件配置项的方法: var peizhi = System.Configuration.ConfigurationManager.AppSettings["***"];
Web.config中
<appSettings>
<add key="***" value="60000" />
</appSettings>
1 获取xml文件的方法 2 public static class ReadAirlinesXml 3 { 4 /// <summary> 5 /// 航空公司配置列表定义 6 /// </summary> 7 readonly static List<AirlinesModel> _AirlinesConfigList = new List<AirlinesModel>(); 8 9 /// <summary> 10 /// 服务配置列表 11 /// </summary> 12 public static List<AirlinesModel> ServiceConfigList 13 { 14 get 15 { 16 if (_AirlinesConfigList.Count > 0) 17 { 18 return _AirlinesConfigList; 19 } 20 else 21 { 22 XmlDocument doc = new XmlDocument(); 23 string path = System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Airlines.xml"); 24 doc.Load(path); //加载Xml文件 25 XmlNodeList nodeList = doc.SelectSingleNode("root").ChildNodes; 26 foreach (XmlNode node in nodeList) 27 { 28 29 AirlinesModel model = new AirlinesModel 30 { 31 AirlinesName = ((XmlElement)node).GetElementsByTagName("name").Item(0).InnerText, 32 AirlinesIcon = ((XmlElement)node).GetElementsByTagName("icon").Item(0).InnerText 33 }; 34 _AirlinesConfigList.Add(model); 35 } 36 37 return _AirlinesConfigList; 38 } 39 40 } 41 } 42 }
char 与 varchar 的区别 简单来说 char 是存固定长度,不够长补空格。所以程序中取值时需要trim下。 varchar 与 nvarchar 的区别 简单来说就是nvarchar把中文和英文大小变成一样了。 varchar(10)能存10个英文或五个中文;(能存8000)8k是数据库存储机制分页大小 nvarchar(10)能存10个英文或10个中文;(能存4000)4k
MVC model前台序列化
var jsonData = Newtonsoft.Json.JsonConvert.SerializeObject(model);
贪婪加载与延迟加载
贪婪加载:顾名思议就是把所有要加载的东西一 次性读取
using (var context = new MyDbContext()) { var orders = from o in context.Orders.Include("OrderDetails") select o; }
当读取订单信息orders的时候,我们希望把订单的详细信息也读取出来,那么这里我们使用Include关键字将关联表也加载进来。
延迟加载:即当我们需要用到的时候才进行加载(读取)
当我们希望浏览某条订单信息的时候,才显示其对应的订单详细记录时,我们希望使用延迟加载来实现,这样不仅加快的了 读取的效率,同时也避免加载不需要的数据。延迟加载通常用于foreach循环读取数据时。
那么我们在定义Model的时候,需要在属性前面添加virtual关键字。
public class Order { public int OrderID { get; set; } public string OrderTitle { get; set; } public string CustomerName { get; set; } public DateTime TransactionDate { get; set; } public virtual List<OrderDetail> OrderDetails { get; set; } }
如果我们想要禁止使用延迟加载,那么最好的方法是在DbContext类的构造方法中声明
public class MyDbContext:DbContext { public MyDbContext() { this.Configuration.LazyLoadingEnabled = false; } }
在ABP框架中使用贪婪加载会方便些
//用GetAllIncluding方法来查询所有学生的信息,结果包含School实体 var listStudent1 = _studentRepository.GetAllIncluding(s=>s.School).ToList(); //用GetAll方法来查询所有学生的信息,结果包含School实体 var listStudent2 = _studentRepository.GetAll().ToList(); //用GetAll方法来查询所有学校的信息,结果包含List Students实体 var listSchool1 = _schoolRepository.GetAll().ToList(); //用GetAllIncluding方法来查询所有学校的信息,结果包含List Students实体 var listSchool2 = _schoolRepository.GetAllIncluding(s=>s.Students).ToList();
可以看到,结果都包含Student包含School的实体,而且School包含集合是Students。
值得注意的是,这里的GetAllIncluding与GetAll的区别是,GetAllIncluding是明确的指明我要查询的实体里面包含的其他表的实体也要查询出来。
例如,GetAllIncluding(s=>s.School),告诉EF,查询Student的时候,请把它关联的School也查询出来。
如果有多个实体关联,请用逗号“,”隔开。例如 GetAllIncluding(s=>s.School, s=>s.Class)。
对于ABP,如果是多租户,用户等多租户的信息查询不到的情况下,在查询前请加下面一句话
CurrentUnitOfWork.DisableFilter(AbpDataFilters.MayHaveTenant, AbpDataFilters.MustHaveTenant);
因为在做多租户的查询是,ABP默认会加一些Filter,只能查询当前登录用户的信息,其他用户的信息Filter掉。
所以上面的意思是去掉多租户查询时的Filter。
windows下cmd操作:
start iexplore.exe http://127.0.0.1:8111 //打开IE 并访问该网站
ping -n 10 127.0.0.1>nul //10秒后停止
taskkill /f /im iexplore.exe /t //关闭IE