阿里云上传下载API接口使用,及EF的使用

--阿里云上传下载API接口使用
相关资料地址:https://help.aliyun.com/document_detail/oss/sdk/dotnet-sdk/install.html?spm=5176.docoss/sdk/dotnet-sdk/preface.6.357.SHx0qW
1.在开始编程前需要引用Aliyun.OSS.dll,可以直接在阿里官网下载,也可以通过NuGet安装。
2.在阿里的官方网站上,对于上传和下载都有简单的示例代码。
3.通过普通的PutObject方法上传的文件最大不能超过5GB,不然报错,通过Multipart分片上传的
大小不能超过48.8TB,几乎没有限制。
4.Multipart分片上传也可以支持断点上传。
断点分片异步上传的实现:
基本的实现方式官网都有,下面是自己需要注意或修改的一点东西
在分片上传时,需要首先创建InitiateMultipartUploadRequest实例对象,然后使用InitiateMultipartUpload方法,得到一个UploadId,这个Id是一个在阿里中长期存在的Id,对应着每次的分片上传事件,除非在上传完成后调用完成分片上传方法client.CompleteMultipartUpload或者调用取消分片上传方法AbortMultipartUpload,这个Id才会消失。所以,我们可以通过client.ListMultipartUploads方法得到空间上所有的未完成的分片上传事件,然后通过key获得上次上传对应的UploadId,之后在根据已获得的UploadId调用client.ListParts方法,就可以获得上次上传的片信息了,得到的是一个Part的集合,Part中有一个PartNumber属性,这是上一次分片上传成功的片是第PartNumber份,可以用于跳过已上传成功的内容,还有一个ETag是用于校验的。最终是使用client.BeginUploadPart进行异步上传到阿里云端。还有一点要说明的是,当我们获取到上次上传成功的Parts后记得要把这些片加入到本次的partETags集合中,不然将不是断点上传,而是将整个文件大小加到了上次上传的文件大小中。
4.下载的话官网也是都有示例的,调用GetObject方法就好。
断点下载和断点分片下载的实现:
这两个功能都是通过官网分片下载的示例所修改的。
断点下载:只是将下载文件分为两片,下载完成片和未下载片。之后不说了。

断点分片下载:这个可以获得下载进度,实现进度条。就是将未下载的片经行分片下载,并追加到本地已下载的文件后面。


--Entity Framework(EF)的使用:从代码类到数据库
1.安装Entity Framework
在NuGet中搜索Entity Framework,进行安装。
2.定义实体类
给属性加上一些特定的描述如[Key],在数据库中就是主键,[Required],在数据库中就是必填。
3.定义数据库连接对象类,要继承DbContext类
这个类就是代表着一个数据库,而类中的属性就代表着数据库中的表
class UserDB : DbContext
    {
        public DbSet Users { get; set; }
        public DbSet UserGroup { get; set; }
    }
4.在配置文件中添加数据库的配置节点

 
   
 

5.开始创建库
UserDB db = new UserDB();// 创建库,此时的db就是数据库中的库
var ug = new UserGroup()// 创建记录
{
    ID = 1,
    GroupName = "Admin"
};
db.UserGroup.Add(ug);// 向表中添加记录
db.SaveChanges();// 保存更爱


--从数据库到代码类
在新建项中选择数据-ADO.NET实体数据模型-来自数据库的EF设计器(VS2015是这个)-一直下一步,选择数据库中需要的对象,如表,视图等,然后类就生成好了。

在Dal层使用EF访问数据库时,需要先引用EF,不然报错

”using 语句中使用的类型必须可隐式转换为“System.IDisposable”
在需要分页时,可以使用已经封装的方法,skip()和take(),且必须先使用order()方法排序,代码如:

        public List GetActivityInfo(int activityType, int pageIndex, int pageSize, out int intTotalCount)
        {
            List listResult = new List();
            using (BoutiqueActivityEntities activityEntityies = new BoutiqueActivityEntities())
            {
                intTotalCount = activityEntityies.Boutique_Activity.Where(t => t.Study_Type == activityType).Count();
                listResult = activityEntityies.Boutique_Activity.Where(t => t.Study_Type == activityType).OrderBy(t => t.Study_Date).Skip(pageSize * pageIndex).Take(pageSize).ToList();
            }
            return listResult;
        }
其中BoutiqueActivityEntities是根据EF生成的:

namespace WeiXinH5Models
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
    
    public partial class BoutiqueActivityEntities : DbContext
    {
        public BoutiqueActivityEntities()
            : base("name=BoutiqueActivityEntities")
        {
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    
        public virtual DbSet Boutique_Activity { get; set; }
    }
}



你可能感兴趣的:(C#)