摘要: 本篇文章我们学习如何给 Book实体类添加校验规则。当用户进行创建或编辑书籍信息时,都会触发校验规则。 软件开发中有一个主要原则被称为 DRY(即“不要自我重复”)。 Razor 页面鼓励进行只需要开发一次,这个功能就能在整个应用中使用,不需要重复开发,或复制粘贴。 DRY 有助于减少应用中的代码量。 DRY 使代码更加不易出错,且更易于测试和维护。 Razor 页面和 Entity Framework框架提供的校验是支持DRY 原则的极佳示例。 校验规则在实体类中的某处以声明方式指定,且在应用程序的所有位置强制执行。阅读全文
posted @ 2018-06-13 16:03 DotNet菜园 阅读(643) 评论(3) 编辑
摘要: 在经过了上面篇文章的学习之后,本篇文章我们来学习如何使用 Entity Framework Code First 迁移功能将新字段添加到模型,并且同时将新字段添加到数据库中。 使用 EF Code First 自动创建数据库时,Code First 会向数据库添加一个表,以帮助跟踪数据库的架构是否与生成它的实体类同步。 如果它们不同步,EF 就会引发异常。 这样一来就更容易发现一致的数据库表或者代码问题。阅读全文
posted @ 2018-05-30 16:50 DotNet菜园 阅读(552) 评论(3) 编辑
摘要: 在经过了上面几篇文章的学习这宾,本篇文章我们来学习如何在已经的功能中添加新字段。阅读全文
posted @ 2018-05-23 16:18 DotNet菜园 阅读(400) 评论(0) 编辑
摘要: 在这一篇教程中我们学习如何增加查询功能,我们将在书籍列表页面中添加搜索功能,通过按“书籍名称”或“作者”来搜索书籍。阅读全文
posted @ 2018-05-11 17:44 DotNet菜园 阅读(670) 评论(1) 编辑
摘要: 并发异常处理与请求处理过程介绍。阅读全文
posted @ 2018-05-03 17:23 DotNet菜园 阅读(699) 评论(1) 编辑
摘要: 通过前面的学习,我们的书籍应用程序已经能正常运行了,但现在的呈现效果不是很理想,主要标题显示的是英文。我们不想看到的时间(如下图所示0:00:00),并且希望把“ReleaseDate”修改成“出版日期”。现在的程序运行效果如下图。阅读全文
posted @ 2018-04-28 16:12 DotNet菜园 阅读(581) 评论(1) 编辑
摘要: Asp.net Core EF进行数据库访问与初始化。阅读全文
posted @ 2018-04-18 10:03 DotNet菜园 阅读(884) 评论(0) 编辑
摘要: 上一篇文章中我们学习了列表页面的结构,@page与@model两个关键Razor指令,以及页面布局应该修改哪里。这一篇文章我们来学习一下新建页面。阅读全文
posted @ 2018-04-10 13:43 DotNet菜园 阅读(692) 评论(0) 编辑
摘要: 介绍asp.net core创建的列表模板页面与一些布局信息。阅读全文
posted @ 2018-04-04 14:47 DotNet菜园 阅读(939) 评论(3) 编辑
摘要: 在本节中,您将使用包管理控制台(PMC)来更新数据库: •添加VisualStudio Web代码生成包。这个包是运行脚本引擎所必需的。 • 执行Add-Migration Initial生成代码文件。 • 执行Update-Database命名,更新数据库。阅读全文
posted @ 2018-03-26 16:41 DotNet菜园 阅读(831) 评论(3) 编辑
摘要: 在本篇文章中,学习添加用于管理数据库中的书籍的实体类。通过实体框架(EF Core)使用这些类来处理数据库。EF Core是一个对象关系映射(ORM)框架,它简化了编写数据库访问的代码。 创建的实体类被称为POCO类(“普通的CLR对象”)因为他们没有在EF Core中有任何依赖。它们定义存储在数据库中的数据的属性。阅读全文
posted @ 2018-03-22 11:19 DotNet菜园 阅读(1198) 评论(2) 编辑
摘要: .NET Core 是一个通用开发平台,由 Microsoft 和 GitHub 上的 .NET 社区共同维护。 它是跨平台的,支持 Windows、macOS 和 Linux,并且可用于设备、云和嵌入式/IoT 方案。 本教程学习如何创建基于ASP.NET Core Razor页面的Web应用程序。阅读全文
posted @ 2018-03-16 11:21 DotNet菜园 阅读(1858) 评论(3) 编辑
摘要: 本示例描述了如何创建一个WCF服务,并宿主在命令行应用程序中,客户端可以访问服务元数据,并以异步的方式消费它。 首先,我们创建了一个WCF服务。关于如何创建WCF服务,可以参考我之前的文章(WCF学习之旅—第三个示例之一(二十七)至WCF学习之旅—第三个示例之五(三十一))阅读全文
posted @ 2018-03-06 14:10 DotNet菜园 阅读(412) 评论(2) 编辑
摘要: 运行程序,如果数据库已经存在,则删除重建。当打开 连接以及单独使用OpenAsync和ExecuteNonQueryAsync方法执行SQL命令时,我们使用了I/O异步操作。 在这个任务完成后,我们创建了一张新的表并插入了一些数据,除了之前提到的方法,我们还使用了ExceuteScalarAsync来异步地从数据库引擎中得到一个标量值,并且使用SqlDataReader.ReadAsync方法来从数据库表中异步地读取数据行。阅读全文
posted @ 2018-02-22 14:56 DotNet菜园 阅读(664) 评论(2) 编辑
摘要: 这里我们通过HTTPListener类实现了一个非常简单的WEB服务器。也使用了TCPLISTENER类进行TCP套接字I/O操作。我们配置了监听器接收任何主机到本地机器1234端口的连接。然后在单独的工作线程中启动这个监管器,从而在主线程中可以控制这个监听器。 当使用GetContextAsync方法时会发生异步I/O操作。可惜的是,其并不接收CancellationToken从而实现取消功能。所以如果想关闭这个服务器,只需要调用 _listenter.Abort方法,这将丢弃所有连接并关闭服务器。阅读全文
posted @ 2018-02-08 14:14 DotNet菜园 阅读(453) 评论(0) 编辑
摘要: 假设以下场景,如果在客户端运行程序,最的事情之一是有一个响应的用户界面。这意味着无论应用程序发生什么,所有的用户界面元素都要保持 快速运行,用户能够从应用程序得到快速响应。达到这一点并不容易!如果你尝试在Windows系统中打开记事本并加载一个有几兆大小的文档,应用程序窗口将交结一段的时间,因为整个文件要先从硬盘中加载,然后程序才能开始处理用户输入。阅读全文
posted @ 2018-01-26 15:09 DotNet菜园 阅读(559) 评论(1) 编辑
摘要: 使用ConcurrentBag创建一个可扩展的爬虫,本示例在多个独立的即可生产任务又可消费任务的工作者间如何扩展工作量。本示例模拟一个爬虫程序。阅读全文
posted @ 2018-01-16 17:23 DotNet菜园 阅读(421) 评论(0) 编辑
摘要: 本示例将学习如何创建一个能被多个线程异步处理的一组任务的例子。阅读全文
posted @ 2018-01-08 14:26 DotNet菜园 阅读(749) 评论(1) 编辑
摘要: 并行算法有可能非常复杂,并且或多或少涵盖了这些并行集合。线程安全并不是没有代价的。比起System.Collections和System.Collections.Generic命名空间中的经典列表 、集合和数组来说,并发集合会有更大的开销,因此,应该只在需要从多个任务中并发访问集合的时候才使用并发集合。在中等代码中使用并发集合没有意义,因为它们会增加无谓的开销。阅读全文
posted @ 2018-01-02 16:29 DotNet菜园 阅读(1054) 评论(1) 编辑
摘要: 本示例学习使用await来获取异步操作结果时,同步上下文行为的结节,并如何在何时关闭同步上下文流。 默认情况下,await操作符会尝试捕获同步上下文,并在其中执行代码。使用await操作符不会发生死锁的情况,因为当等待结果时并不会阻塞UI线程。阅读全文
posted @ 2017-12-27 10:16 DotNet菜园 阅读(968) 评论(1) 编辑