linq

c#购物车功能实现及收藏功能实现

倾然丶 夕夏残阳落幕 提交于 2020-08-06 15:34:55
一.思路逻辑: 首先我先来说一下我自己的理解,一个萌新的见解,要实现购物车的功能,首先要获取到登录时的用户id及商品的编号(商品id),这里我用的模式是mvc模式进行实现功能的,用户登录时,利用session保存用户的登录用户名,然后在控制器里进行传值操作,定义一个session进行接收用户输入的用户名,登录成功后进行保存用户的用户名,登录成功,前台在进行跳转到显示界面,点击事先创建好的购物车按钮,把我们已经保存好的用户名传过去,在进行session接收用户名字,添加到购物车时,前面我也说到需要两个值,我们现在已经获取到了用户id(用户名),再获取到商品id就可以进行添加到购物车功能的实现,在显示的ajax拼接字符串进行显示的时候,我们需要再添加一个多选按钮(多选按钮是为了进行多项数据选择时,添加到购物车以及添加收藏时更方便一些),为多选按钮添加一个id属性或者name属性,这里是为了我们方便获取它的数据,获取多选框的id值的方法我就不在这里过多介绍了,既然我们需要的两个值都已经获取到,我们的添加购物车功能就可以实现了,今天先写这么多,明天还要周考,在以后的时间里我会继续修改和添加这篇文章的后续内容,大佬们看过之后,若是有空闲时间,在评论区多给小学生一些建议,我会进行改正的.今天我就说到这里了,购物车的添加基本说完了,后续我会及时利用空闲时间进行后续功能及代码思路逻辑的更新. 二

FreeSql (三十四)CodeFirst 迁移说明

僤鯓⒐⒋嵵緔 提交于 2020-08-06 11:24:21
FreeSql 支持 CodeFirst 迁移结构至数据库,这应该是(O/RM)必须标配的一个功能。 与其他(O/RM)不同FreeSql支持更多的数据库特性,而不只是支持基础的数据类型,这既是优点也是缺点,优点是充分利用数据库特性辅助开发,缺点是切换数据库变得困难。不同程序员的理念可能不太一致,FreeSql尽量把功能支持到极致,至于是否使用是项目组技术衡量的另一个问题。 尽管多种数据库适配逻辑非常复杂,FreeSql始终秉承优化程序开发习惯的原则尽量去实现,中间碰到了一些非技术无法攻克的难题,比如数据库的自定义类型,和实体类本身就是一种冲突,为了减少使用成本,诸如此类的数据库功能没有得到支持。 static IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10") .UseAutoSyncStructure(true) //自动同步实体结构【开发环境必备】 .Build(); //请务必定义成

C#作业调度FluentScheduler学习笔记

喜欢而已 提交于 2020-08-06 06:23:57
一、简介 FluentScheduler是一个简单的任务调度框架,定时任务管理器。 GitHub地址: https://github.com/fluentscheduler/FluentScheduler 二、示例程序 2.1、界面 新建一个WinForm程序FluentSchedulerClient,项目右键->属性->应用程序->输出类型,选择控制台应用程序。 2.2、引用 项目右键->管理 NuGet 程序包->FluentScheduler。 2.3、作业 新建一个类DataSyncJob并继承IJob,代表它是一个作业,同时实现IJob.Execute方法。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using FluentScheduler; namespace LinkTo.Test.FluentSchedulerClient { public class DataSyncJob : IJob { void IJob.Execute() { Console.WriteLine($ " This is DataSyncService submmit...:{Guid.NewGuid(

EntityFrameworkCore 开发实践问题及规范

白昼怎懂夜的黑 提交于 2020-08-06 05:23:31
严重问题 客户端求值 如where条件包含的GetValueOrDefault()不能被翻译成sql语句 不规范代码段例子 public async Task<List<Person>> GetPersonsAsync() { var results = await _context.Person .Where(p => p.State.GetValueOrDefault() == 1) .ToListAsync() return results; } 客户端与服务器评估 作为一般规则,Entity Framework Core 会尝试尽可能全面地评估服务器上的查询。 EF Core 将查询的一部分转换为可在客户端评估的参数。 系统将查询的其余部分(及生成的参数)提供给数据库提供程序,以确定要在服务器上评估的等效数据库查询。 EF Core 支持在顶级投影中进行部分客户端评估(基本上为最后一次调用 Select())。 如果查询中的顶级投影无法转换为服务器,EF Core 将从服务器中提取任何所需的数据,并在客户端上评估查询的其余部分。 如果 EF Core 在顶级投影之外的任何位置检测到不能转换为服务器的表达式,则会引发运行时异常。 请参阅查询工作原理,了解 EF Core 如何确定哪些表达式无法转换为服务器。 在 3.0 版之前,Entity Framework Core

一个茴字有三种写法——吐槽C#9.0的Records

喜欢而已 提交于 2020-08-05 21:13:34
最近是微软开了Build 2020大会,由于疫情原因,改成了在线举行,Build大会上,C#公布9.0版本。 我个人对于C#的更新向来都是喜闻乐见,乐于接受的,对于博客园上某些人天天嘲讽C#只会增加语法糖的人,我向来对他们不屑一顾,认为他们是井底之蛙。 因此我仔细看了微软发的文章 Welcome to C# 9.0 ,准备好好观摩和学习。但当我看到Records语法时,我就隐隐感觉C#这样玩语法糖要翻车了。 后来看到知乎上的问题 如何评价即将发布的 C# 9.0? ,我稍加思索,愈发觉得Records语法完全是大型翻车现场,因此整理出来我认为的Records的翻车点(兼吐槽)。 首先看官方给出的Records样例 public data class Person { public string FirstName { get; init; } public string LastName { get; init; } } 第一个吐槽点: data class 声明有必要吗?如果要多加一个 data 关键字,直接用 record 不好吗,如果不加关键字,为什么不用 readonly class 啊。 public record Person {} public readonly class Person {} 第二个吐槽点,官方给出上面的等价定义 public data class

哪种方法效果更好:.Any()与.Count()> 0?

末鹿安然 提交于 2020-08-05 17:49:40
问题: in the System.Linq namespace, we can now extend our IEnumerable 's to have the Any() and Count() extension methods . 在 System.Linq 命名空间中,我们现在可以将 IEnumerable 扩展为具有 Any() 和 Count() 扩展方法 。 I was told recently that if i want to check that a collection contains 1 or more items inside it, I should use the .Any() extension method instead of the .Count() > 0 extension method because the .Count() extension method has to iterate through all the items. 最近,我被告知,如果我要检查一个集合包含在它里面1个或多个项目,我应该使用 .Any() 而不是扩展方法 .Count() > 0 扩展方法,因为 .Count() 扩展方法必须遍历所有项目。 Secondly, some collections have a property (not an

C# 扩展TaskScheduler实现独立线程池,支持多任务批量处理,互不干扰,无缝兼容Task

独自空忆成欢 提交于 2020-08-05 05:21:29
为什么编写TaskSchedulerEx类? 因为.NET默认线程池只有一个线程池,如果某个批量任务一直占着大量线程,甚至耗尽默认线程池,则会严重影响应用程序域中其它任务或批量任务的性能。 特点: 1、使用独立线程池,线程池中线程分为核心线程和辅助线程,辅助线程会动态增加和释放,且总线程数不大于参数_maxThreadCount 2、无缝兼容Task,使用上和Task一样,可以用它来实现异步,参见: C# async await 异步执行方法封装 替代 BackgroundWorker 3、队列中尚未执行的任务可以取消 4、通过扩展类TaskHelper实现任务分组 5、和SmartThreadPool对比,优点是无缝兼容Task类,和Task类使用没有区别,因为它本身就是对Task、TaskScheduler的扩展,所以Task类的ContinueWith、WaitAll等方法它都支持,以及兼容async、await异步编程 6、代码量相当精简,TaskSchedulerEx类只有230多行代码 7、池中的线程数量会根据负载自动增减,支持,但没有SmartThreadPool智能,为了性能,使用了比较笨的方式实现,不知道大家有没有既智能,性能又高的方案,我有一个思路,在定时器中计算每个任务执行平均耗时,然后使用公式(线程数 = CPU核心数 * ( 本地计算时间 + 等待时间 )

Nancy之Forms验证

坚强是说给别人听的谎言 提交于 2020-08-05 00:03:40
授权几乎是所以系统都不可或缺的部分,在 Nancy 中怎么授权呢 ? 我们这篇博文来说一下 Nancy 的 Forms 授权。 首先在 NuGet 上安装 Nancy.Authentication.Forms Nancy 的 Forms 验证得实现 IUserMapper 接口,用户类实现 IUserIdentity 接口(为了方便,我把 DB 的 User , Model 的 User 全合成一个 User ) User.cs using Nancy.Security; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TestSelfHostWeb { public class User : IUserIdentity { public User() { } public User(string userName) { UserName = userName; } /// <summary> /// 实现接口的成员 /// </summary> public string UserName { get; set; } public string Password { get;

Winform下的语言国际化,几行代码轻松实现

你离开我真会死。 提交于 2020-08-04 23:37:01
最近做了一些关于winform的项目,需要用到winform的语言国际化,在初使化的时候用起来非常方便。可以参考一下: 核心逻辑: 预览效果演示: OK,以下是核心代码和操作流程 一,添加LanguageHelper类 using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WFInfor { public class LanguageHelper { #region SetAllLang /// <summary> /// Set language /// </summary> /// <param name="lang">language:zh-CN, en-US</param> private static void SetAllLang(string lang) { System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang); Form

深入理解 EF Core:EF Core 读取数据时发生了什么?

て烟熏妆下的殇ゞ 提交于 2020-08-04 21:28:10
阅读本文大概需要 11 分钟。 原文: https://bit.ly/2UMiDLb 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的。其中可能会去除一些本人实在不知道如何组织但又不影响理解的句子。 本文将为你详细描绘 EF Core 从数据库中读取数据的“幕后”视图。我将揭开两种数据库读取方式的面纱:一个是普通的查询,另一个是使用 AsNoTracking 方法的非跟踪查询。我还将通过一个实验来演示我是如何解决我的一个客户遇到的性能问题。 我假设你对 EF Core 已经有了一定的认识,但在深入学习之前,我们先来了解一下如何使用 EF Core,以确保我们已经掌握了一些基本知识。这是一个“深入研究”的课题,所以我准备大量的技术细节,希望我的描述方式你能理解。 本文是“深入理解 EF Core”系列中的第一篇。以下是本系列文章列表: 当 EF Core 从数据库读取数据时发生了什么?(本文) 当 EF Core 写入数据到数据库时发生了什么?(敬请期待) 概要 EF Core 有两种方法从数据库中读取数据(也称为查询):普通 LINQ 查询和包含 AsNoTracking 方法的非跟踪 LINQ 查询。 这两种方法查询的返回类(被称为实体类),它连接的其它的实体类(即所谓的导航属性)也被同时加载