Aspnetcore2.0中Entityframeworkcore及Autofac的使用(附Demo)(

Posted mrliu90

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Aspnetcore2.0中Entityframeworkcore及Autofac的使用(附Demo)(相关的知识,希望对你有一定的参考价值。

一,通过Entityframeworkcore中DbFirst模式创建模型

这里只说一下Entityframeworkcore中DbFirst模式创建模型,想了解CodeFirst的可以自行度娘,还是在原有项目中创建一个Model类库,然后通过通过vs中NuGet的程序包管理控制台执行

 技术分享图片

安装EntityFrameworkCore类工具包,:

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.SqlServer.Design

Microsoft.EntityFrameworkCore.Tools

技术分享图片

 

注意安装以下类库版本需与AspNetCore.Model自建类库的Core版本相适应。

通过执行以下命令生成实体类与上下文

 Scaffold-dbcontext "Server=.;database=test1;Integrated Security=false;user id=****;password=*****" Microsoft.EntityFrameworkCore.SqlServer -outputdir Models

技术分享图片

 技术分享图片

生成成功后要修改一下test1Context.cs中的代码

 //protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        //{
        //    if (!optionsBuilder.IsConfigured)
        //    {
        //        optionsBuilder.UseSqlServer(@"Server=zhang;database=test1;Integrated Security=false;user id=sa;password=123456");
        //    }
        //}

        //自定义定义构造器
        public test1Context(DbContextOptions options):base(options)
        {

        }

注意:每次更新数据库都要修改test1Context.cs中的代码

新建BookService.cs

技术分享图片
namespace AspNetCore.Service
{
    public class BookService
    {
        private test1Context _context = null;

        public BookService(test1Context context)
        {
            this._context = context;
        }


        public Book Get(long id)
        {
            return _context.Book.Find(id);
        }
    }
}
View Code

下一步我们就要通过Controller把数据呈现出来,在这里我们要把数据库连接放到appsettings.json配置文件里

技术分享图片
{
    "ConnectionStrings": {
        "connstr": "Data Source=.;Initial Catalog=test1;User ID=*****; Password=**********"
    },
    "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
            "Default": "Warning"
        }
    }
}
View Code

修改一下项目启动文件Startup.cs:

技术分享图片
 public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            //配置上下文
            services.AddDbContext<test1Context>(options => options.UseSqlServer(Configuration.GetConnectionString("connstr")));
            //默认类库声明周期
            services.AddScoped(typeof(BookService));
        }
View Code

新建BookController中的代码:

技术分享图片
public class BookController : Controller
    {
        //依赖注入
        private readonly BookService _service = null;
        public BookController(BookService service)
        {
            this._service = service;
        }

        public IActionResult Index()
        {
            return Content($"第一本书的书名是[{_service.Get(1).Name}]") ;
        }
    }
View Code

结果:

技术分享图片

 

 ^v^是不是很开森

 

以上是关于Aspnetcore2.0中Entityframeworkcore及Autofac的使用(附Demo)(的主要内容,如果未能解决你的问题,请参考以下文章

VS2013使用EntityFrame问题解决办法

EntityFrame Work 6 Code First 配置字段为varchar 类型

EntityFrame Work 6 Code First 配置字段为varchar 类型

带有 EF6 和 dotConnect for oracle 的 aspnetcore 2.0

同一站点中的 asp net core 2.0 JWT 和 Openid Connect 身份验证

如何告诉 Entity Framework 我的 ID 列是自动递增的(AspNet Core 2.0 + PostgreSQL)?