痕迹灬
致力于为.Net开发者提供最新的技术资讯、实用的开发教程和案例分享。我们的内容涵盖了.Net框架、C#编程、.NetCore、WPF、WinForms等方面的知识。
展开
-
.NetCore——自定义筛选器
开发一个实现请求限流器功能的操作筛选器,避免恶意客户端频繁发送大量请求而消耗服务器资源,实现“1s 内只允许最多有一个来自同一个IP地址的请求”,通过自定义操作筛选器实现:新建RateLimitFilter.cs。原创 2024-04-17 15:43:54 · 543 阅读 · 0 评论 -
性能优化“万金油”:缓存Cache
这边用一个不存在的ID查询就会一直返回null,如果一直大量的恶意用不存在的ID查询数据库,那么数据库就会承受非常大的压力,可能导致服务器崩溃,所以我们可以把“查不到”也加入到缓存中,这时候就可以使用GetOrCreateAsync方法,这个方法会把null当成合法的缓存值,就可以避免缓存穿透问题。分布式系统中,缓存数据是不能共享的,集群中每个节点的web应用都要加载一份数据到自己的内存缓存中,如果集群较多,这样重复的查询,重复的加载到分布式服务器缓存中,也是有可能压垮数据库服务器的。原创 2024-04-11 15:16:45 · 407 阅读 · 1 评论 -
EFCore高级技术:表达式树
一是自己构建表达式树,二是使用DynamicLinq,直接输入查询字符串。Func输出的结果只有参数、返回值类型,Expression中有内部运算逻辑,表示Expression对象存储了运算逻辑。表达式树(expression tree)是用树形数据结构来表示代码逻辑运算的技术,在运行时访问逻辑运算的结构。2、就算要构建运行时的动态查询,首先想到的,也是利用IQueryable的延迟执行和复用的特性来完成。所以,在实际项目中,除非是自己要开发一个框架,否则一般的业务项目,都极少会需要自己构建表达式树。原创 2024-04-01 15:15:41 · 248 阅读 · 0 评论 -
EFCore 反向工程(DBFirst)----慎用
使用EFCore时一般推荐code first,也就是先创建实体类,然后根据实体类生成数据表。但是有时候数据表已经存在,这时候就需要基于数据库表来创建实体类。原创 2024-04-01 14:09:16 · 462 阅读 · 0 评论 -
WPF实战项目二十二(客户端):首页添加备忘录与待办事项
3、ViewModels新建Dialogs文件夹,新建AddMemoViewModel、AddToDoViewModel。1、在View文件夹下新建文件夹Dialog,新建View:AddMemoView、AddToDoView。2、IndexView中修改按钮,绑定方法:ExecuteCommand。5、在App.xmal.cs中注册弹窗。4、修改IndexViewModel。原创 2023-12-27 14:04:23 · 1183 阅读 · 0 评论 -
WPF实战项目二十一(客户端):设置默认首页
1、在Common文件夹里面新增接口IConfigureService,来专门配置启动过程设置的一些参数。2、MainViewModel中继承接口IConfigureService,并实现。3、在app.xmal.cs中初始化过程,重写方法。原创 2023-12-21 13:31:14 · 820 阅读 · 0 评论 -
WPF实战项目十八(客户端):添加新增、查询、编辑功能
8、SearchCommand搜索事件可以和上面AddCommand合并到一起,【添加待办】按钮设置事件:ExecuteCommand,参数设置="新增",查找框设置成ExecuteCommand,参数设置="查询"7、绑定搜索输入框,首先定义一个属性,前台绑定输入框的值Search,给输入框添加回车事件。12、【保存】事件,按钮添加绑定事件,修改Excute方法、新增Add方法和Save方法。1、ToDoView.xmal添加引用,添加微软的行为类。5、前台绑定文本标题、内容、状态。原创 2023-11-30 16:28:24 · 1906 阅读 · 0 评论 -
WPF实战项目十九(客户端):修改RestSharp的引用
修改HttpRestClient,更新RestSharp到110.2.0,因为106版本和110版本的代码不一样,所以需要修改下代码。Baseservice.cs也要相应的修改。原创 2023-11-30 16:28:26 · 950 阅读 · 0 评论 -
WPF实战项目十七(客户端):数据等待加载弹框动画
1、在Common文件夹下新建文件夹Events,新建扩展类UpdateLoadingEvent。2、新建一个静态扩展类DialogExtensions来编写注册和推送等待消息弹框方法。3、在ViewModel中添加实现类NavigationViewModel。5、在View文件夹下新建用户控件ProgressView.xmal。4、在主窗体MainView.xmal中给弹窗界面命名。6、在MainView.xmal.cs中注册消息。原创 2023-11-23 16:59:23 · 2060 阅读 · 0 评论 -
WPF实战项目十六(客户端):备忘录接口
2、新增MemoService类,继承BaseService和IMemoService接口。1、新增IMemoService接口,继承IBaseService接口。5、重新编写获取备忘录信息代码,CreateMemoList。4、在MemoViewModel.cs中添加备忘录的服务。3、在App.xmal.cs中注册备忘录的服务。原创 2023-11-23 09:38:12 · 732 阅读 · 0 评论 -
WPF实战项目十五(客户端):RestSharp的使用
10、修改ToDoViewModel的代码,添加ToDoService服务,修改CreateToDoList 代码。12、F5启动项目,点击【待办事项】,显示了待办事项的列表这和webapi中返回的待办事项Json数据一样。8、新增ToDoService类,继承BaseService类和接口IToDoService。9、在客户端App.xaml中注册httprestclient、注册默认服务的地址、注册服务。7、新增IToDoService接口,继承IBaseService接口。原创 2023-11-22 16:09:23 · 2165 阅读 · 0 评论 -
WPF实战项目十四(API篇):登录注册接口
4、新增登录控制器LoginController。2、新增ILoginService接口。6、在program.cs里面添加服务。3、实现LoginService接口。5、添加AutoMapper映射关系。1、新建UserDto.cs。原创 2023-08-31 16:34:18 · 1259 阅读 · 0 评论 -
WPF实战项目十三(API篇):备忘录功能api接口、优化待办事项api接口
9、在IToDoService.cs和IMemoService.cs中添加分页查询的接口。10、在ToDoService.cs中实现接口和MemoService.cs中实现接口。8、针对查询数据可以做个优化,增加查询的页数、内容、数据量等,新建查询参数类。11、在ToDoController和MemoController中添加代码。3、新建服务接口IMemoService。4、新建服务MemoService。6、在program.cs添加服务。1、新建MenoDto.cs。原创 2023-08-29 16:19:36 · 1351 阅读 · 0 评论 -
WPF实战项目十二(API篇):配置AutoMapper
1、新建类库WPFProjectShared,在类库下新建文件夹Dtos,新建BaseDto.cs,继承INotifyPropertyChanged,实现通知更新。4、在api层引入AutoMapper,并新建文件夹Extensions,新建帮助类AutoMapperProFile.cs,继承ProFile。6、IToDoService.cs修改代码传入ToDoDto,相应的ToDoService.cs的代码也要修改。3、新建待办事项传输实体TodoDto.cs,继承BaseDto.cs。原创 2023-08-24 14:09:47 · 1657 阅读 · 0 评论 -
WPF实战项目十一(API篇):待办事项功能api接口
6、ToDoController.cs里面依赖注入IUnitOfWork和IToDoService,并添加CURD的代码。3、新建待办事项接口IToDoService.cs,继承IBaseService。4、新建实现类ToDoService.cs,继承IToDoService.cs。5、program.cs里面注入服务。原创 2023-08-09 14:01:32 · 1602 阅读 · 0 评论 -
WPF实战项目十(API篇):引入工作单元UnitOfWork
2、在UnitOfWork文件夹下引用UnitOfWork下的IPagedList.cs、PagedList.cs类,WPFProjectAPI项目引用WPFProjectShared项目。4、新建控制器UserController测试下工作单元的使用 ,先新建基础控制器BaseApiController,全局Resful风格代码(详见。,下载UnitOfWork的代码,将工作单元部分的代码引用到自己的项目,新增UnitOfWork文件夹。原创 2023-07-21 11:22:10 · 845 阅读 · 0 评论 -
WPF实战项目九(API篇):创建WebApi项目,数据库迁移,EFCore
8、下面就是数据库迁移,通过Add-Migration、Update-Database命令迁移数据库。4、新建之前WPF界面有关的实体类基类BaseEntity.cs,待办事项类ToDo.cs,备忘录类Memo.cs。若使用的是SQLServer数据库就要下载EFCore的SQLServer包。5、创建数据库上下文操作类MyDbContext.cs,继承DbContext。2、 删除IIS Express,使用自带编辑器运行webapi项目成功。7、在program.cs中添加数据库上下文服务。原创 2023-07-18 13:54:45 · 1355 阅读 · 0 评论 -
WPF实战项目八:设置界面
4、在Views文件夹新建SkinView.xaml,SystemSettingsView.xaml,AboutView.xaml,在ViewsModels文件夹增加SkinView.cs,SystemSettingsView.cs,AboutView.cs。1、总体分成两行,第二行又可以分成两列,左边一列类似于主界面的菜单界面,是一个ListBox,可以直接把MainView.xaml的ListBox的代码复用,右侧是一个区域,需要类似MainView.xaml一样注册一个区域,用导航来做。原创 2023-07-18 09:25:54 · 1055 阅读 · 0 评论 -
WPF实战项目七:设计备忘录界面
另外,在打开待办事项或备忘录的时候设置一个打开的动画,可以用到MaterialDesign里面的动画,设置打开过程当中的动画类型。发现一个问题,当数据多了之后,不能滚动,所以添加滚动条,之前待办事项界面也要相应的添加滚动条。原创 2023-07-14 11:15:06 · 410 阅读 · 0 评论 -
WPF实战项目六:设计待办界面
后端需要新增属性IsIsRightDrawerOpens用来绑定到,【新增待办】按钮设置属性IsIsRightDrawerOpens=True,并绑定新增的方法。1、先生成待办事项测试数据,初始化ToDoViewModel.cs。5、在待办事项右侧,点击【添加待办】按钮,右侧弹窗添加待办,4、 添加ItemControl的代码。原创 2023-07-14 10:29:27 · 405 阅读 · 0 评论 -
WPF实战项目五:首页设计
2、编写IndexViewModel.cs,继承BindableBase,新增ObservableCollection TaskBars列表属性,初始化列表数据(7、在IndexViewModel.cs当中增加初始化待办事项、备忘录的测试数据,后续会通过api接口传到前台。6、新建MemoDto.cs、ToDoDto.cs类继承BaseDto.cs。4、设置MainView.xaml的字体为微软雅黑。原创 2023-07-13 14:35:07 · 1031 阅读 · 0 评论 -
WPF实战项目四:左侧菜单导航
9、在点击首页、待办事项、备忘录、设置按钮时,菜单栏不会自动收缩进去,需要添加一下代码,设置ListBox的名字:x:Name="drawerHost"8、在ListBox下面添加导航,通过添加行为Microsoft.Xaml.Behaviors.Wpf来实现。6、在MainViewModel.cs中初始化导航 ,声明前进后退功能方法。5、在右侧空白注册一个区域,区域注册用上面单独的类来控制。原创 2023-07-12 16:11:50 · 3992 阅读 · 1 评论 -
WPF实战项目三:首页左侧菜单绑定
一定要是 UserControl,就是在设计页面的xaml根部不要是Window属性,要得是UserControl,如果是Window设计就不能嵌套。MainView.xaml中的菜单()新增文件夹Common-Models,新建菜单类名:MenuBar.cs。在项目文件夹Views中添加用户空间,这里注意。原创 2023-07-11 16:08:30 · 1617 阅读 · 0 评论 -
WPF实战项目二:设计首页导航条
通过MaterialDesignThemes的github地址,下载代码,将导航条代码复制到MainWindow.xaml中。添加三个按钮最小化、最大化、关闭,添加头像,设置头像为圆角显示,总体代码如下。设置materialDesign的 x:Name="ColorZone"设置三个按钮的点击事件和拖动导航栏、双击导航栏的点击事件。在解决方案窗体下添加图片文件夹,添加头像图片。添加代码到原创 2023-07-11 10:14:24 · 1989 阅读 · 0 评论 -
WPF实战项目一:新建.NetCore平台下的WPF项目
删掉App.xaml中的代码:StartupUri="MainWindow.xaml" ,在MainWindow.xaml下添加一个按钮,显示颜色,证明UI框架引入成功。使用Nuget下载UI框架程序包:Prism.DryIoc 、MaterialDesignThemes。引入UI库MaterialDesignThemes,进入github。删除IIS Express,使用自带编辑器运行webapi项目成功。在App.xaml 引入prism,并重写方法。选择.netcore 6.0框架。原创 2023-06-12 14:26:58 · 1910 阅读 · 0 评论