本人是做JAVA开发的,因为前两天看了一篇文章,知道了.net core的存在,很感兴趣,所以做了一下尝试。
打开visual studio 2017,新建一个.net core
点击运行,你可以看到一个网站模板。
打开Program.cs,你看到的是这样的:
这个文件是应用的启动文件,
UseKestrel()表示启用了内置的一个中间件"Kestrel",就和eclipse的GlassFish是一个意思,但据说性能比iis高出很多倍。
UseStartup<Startup>() 泛型指定了启动时的项目运行时配置文件,就是Startup.cs文件。
mvc相信大家都已经很熟悉了,就不多说了,我们连接一下数据库,因为我本机安装有mysql所以就自然想去连接,
所以就去NuGet找相关的模块,但都无法安装,后来看了一个文档,说是.net core的连接库没在nuget标准库里。
最后去nuget官网找到了:
http://www.nuget.org/packages/MySql.Data.EntityFrameworkCore/
在nuget控制台下执行这个命令就可以了:Install-Package MySql.Data.EntityFrameworkCore -Pre
然后在项目下新建一个Modles文件夹,用来存放entity
在modles下新建一个类:
public class User { [Key] public int ID { get; set; } public string Name { get; set; } public string Email { get; set; } public string Bio { get; set; } }
在同一个文件中新建一个ef上下文:
public class EFDbContext : DbContext { public EFDbContext(DbContextOptions<EFDbContext> options) : base(options) { } public DbSet<User> User { get; set; } }
将Stratup.cs文件做如下修改
public void ConfigureServices(IServiceCollection services) { services.AddDbContext<EFDbContext>(options => options.UseMySQL(Configuration.GetConnectionString("MySQL"))); // Add framework services. services.AddMvc(); }
这里有一个问题,就是
options.UseMySQL
这里会报错,说UseMySQL方法不存在,这是因为这个方法是在扩展包里的,所以要引入MySQL.Data.EntityFrameworkCore.Extensions命名空间。
这里有个
Configuration.GetConnectionString("MySQL")
的连接配置文件,那我们打开appsettings.json文件,做如下修改:
{ "ConnectionStrings": { "MySQL": "server=localhost;database=template;uid=root;pwd=;charset=utf8;sslmode=none" }, "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" } } }
在mysql里建一个新库template ,对照着User.cs文件,新建一张表,写点测试数据在里面。
打开Controllers下的HomeControll.cs文件:
public IList<User> UserList() { var list = _context.User.ToList(); return list; }
点击运行,
在地址栏里追加地址:/Home/UserList
以上就是对于这次体验的大概过程,感觉相对于java目前最火的框架springmvc,从完整性和模块独立上来说,两者的差距已经越来越小了,听说2.0版本今年7月左右发布,很有可能会超越后者,另外 .net core相较于.net framework的最大变化,就是能跨平台了,下次再说说怎么把项目发到linux上执行。