GVKun编程网logo

猕猴桃中没有名为'numpy.core._multiarray_umath'的模块(猕猴桃还有其他名称吗)

3

如果您想了解猕猴桃中没有名为'numpy.core._multiarray_umath'的模块和猕猴桃还有其他名称吗的知识,那么本篇文章将是您的不二之选。我们将深入剖析猕猴桃中没有名为'numpy.c

如果您想了解猕猴桃中没有名为'numpy.core._multiarray_umath'的模块猕猴桃还有其他名称吗的知识,那么本篇文章将是您的不二之选。我们将深入剖析猕猴桃中没有名为'numpy.core._multiarray_umath'的模块的各个方面,并为您解答猕猴桃还有其他名称吗的疑在这篇文章中,我们将为您介绍猕猴桃中没有名为'numpy.core._multiarray_umath'的模块的相关知识,同时也会详细的解释猕猴桃还有其他名称吗的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

猕猴桃中没有名为'numpy.core._multiarray_umath'的模块(猕猴桃还有其他名称吗)

猕猴桃中没有名为'numpy.core._multiarray_umath'的模块(猕猴桃还有其他名称吗)

如何解决猕猴桃中没有名为''numpy.core._multiarray_umath''的模块?

当尝试在android设备上以kivy方式导入numpy时,我不断收到以下错误消息。

No module named ''numpy.core._multiarray_umath''

如果我已经在main.py文件所在的位置安装了numpy,为什么也会收到此错误消息? 在使用buildozer进行构建之前,请确保要导入的文件(_multiarray_umath)位于numpy库中,即-> _multiarray_umath.cpython-36m-x86_64-linux-gnu.so 位于 numpy / core 吗? 预先感谢。

解决方法

您讨论的文件是桌面linux二进制文件,与您的android设备不兼容。这就是为什么它在android上不起作用,并且(根据评论)修复程序是将numpy放入要求中,以便buildozer构建并包含一个android版本。

在buildozer.spec文件中列出numpy修复了该错误,但我似乎无法使tensorflow在kivy中为android编译。 tensorflow在Android上无法正常工作吗?

当前不支持Tensorflow。显然tensorflow lite可以工作,但是您需要通过gradle将其包括在内并编写一些Java包装器代码来访问它。

ASP.NET Core (.NET Core) and ASP.NET Core (.NET Framework)区别

ASP.NET Core (.NET Core) and ASP.NET Core (.NET Framework)区别

ASP.NET Core可以使用.NET Core和.NET Framework运行时,但运行在.NET Core与.NET Framework下ASP.NET Core 有哪些区别呢。本文就主要介绍一下它们之前的区别。

原文地址:ASP.NET Core (.NET Core) and ASP.NET Core (.NET Framework)区别

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core


支持的数据库:可以查看官方网站
https://docs.microsoft.com/en-us/ef/core/providers/

安装了VS2017后会安装了LocalDB,验证localDB
在CMD输入:sqllocaldb

现实当前存在的实例
sqllocaldb info



使用VS也可以查看



appsettings.json配置数据库链接字符串

把localDB的链接字符串复制到这里

需要有一个类继承DBContext这个类,有一些属性DbSet,每一个DbSet和数据中的一个表对应

如果使用EFCore

默认按装了AspNetCore.App里面应该默认安装了EFCore这里搜一下

这里已经包含了这么多了,如果使用的是Sql server的默认基本就足够了

测试命令,dotnet ef。说明ef没问题
dotnet ef就是efCore的命令行工具

新建文件夹,并新建类DataContext

继承这个DbContext。命名空间在上面引入

prop可能是Resharper的快捷键,快速建立属性

Resharper自动生成的属性名,通常会加上s表示复数的形式

增加构造函数,配置链接到哪个数据库
ctor快捷键

把配置信息从构造函数传进来

options的配置信息传进来之后呢,要把它传给他的父类。然后这DataContext的功能才完整了。
父类会处理这些配置信息,连接适当的数据库


要使用这个DbContext,依赖注入的方式

它有个overload方法可以配置他的参数,写一个栏目大表达式,这个options有很多的方法,
这里使用的方法是志明数据库的类型

useSqlServer有个必填的参数就是数据库的链接字符串
需要回去appSetting.json里面的配置信息
startUp写个构造函数,可以注入一些服务

注入IConfiguration,
这里又用到了Resharper,添加一个field


这个Configuration是在什么时候注册完成的呢?是在这里的CreateDefaultBuilder方法里就已经注册好了,所以在StartUp里面可以使用这个服务

有层级关系,曾与层之间应冒号;

把链接字符串春进去就可以了

然后改一下数据库链接字符串的 数据库名称:

这个表示使用windows验证

另外一种获取链接字符串的方法GetConnectionString会去找ConnectionStrings下面的值




不用创建变量直接回去也是可以的

迁移



15分32秒





 

如果使用VS2017 就在包管理工具的窗体内
如果使用cli 就在cmd窗体

迁移命令

迁移如要涉及到这两个命令

执行迁移的命令

创建了Migrations文件夹,里面有两个文件,带事件戳的是迁移文件,SnapShot是快照文件,快照文件不要手动去改,迁移文件在有的情况下可以稍做改动

Updaste-Database -Verbose
-Verbose:查看执行的明细过程

表就创建好 了。一个是Students表,一个是数据迁移的表

HomeController对接口有依赖,对具体的实现类没有依赖

修改为读取数据库

新建类文件EFCoreRepository

注入DataContext

EF修改原来的代码

修改为EFCoreRepository

这里因为使用了DBContext,它不是线程安全的,AddSingleton肯定会发生线程的问题修改为Scoped模式
每次http请求,生成一个新的实例。每次Http请求,可以保证它是在一个线程里,或者叫做一个逻辑线程内

清理,没用的代码

app.Run的代码删掉

配置文件里清楚垃圾代码

运行程序报错

这里去掉





 

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 14. ASP.NET Core Identity 入门

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 14. ASP.NET Core Identity 入门

默认的身份认证好授权系统



UserManager用来操作用户的类,

Singi用来身份认证的

添加AccountController

先声明SignInManager和UserManager这两个服务

快捷键Ctrl+.

两个都需要分别进行Ctrl+.快速的生成

创建登陆的Action Login

建立View

创建LoginViewModel

主要是用户名和密码两个字段



登陆的逻辑

注册的逻辑



退出的逻辑

创建regiser的视图页面

在_Lauout里面添加了注册和登陆的链接


点击注册发现报错了。没有注册服务

注册服务

这里按照官方文档来就可以了

这里么有ApplicationDbContext


这里修改为IdentityContext

先进行数据迁移

报错,项目里面多余一个DbContext。一个是自己的DbConext 一个是Identity的DbContext

所以需要指定具体的DbContect


注册服务的时候,指明迁移的类库名称

再次尝试成功





上面只是配置了DbConext,还需要注册IdentityUser的服务


前面多加了一个叹号

密码严格要求了

参考官方文档:把这块复制过去进行修改



判断用户登陆成功后就不再显示,注册和登陆的按钮,在View页面注册ItentityUser





运行页面并不好用,没有使用中间件

登陆成功后

授权

添加一个学生,要求只有登陆的用户才可以进去添加
授权使用Authorize这个属性,这样就只有登陆的用户才可以访问这个Create页面

这个标签可以作用于Controller也可以作用于action,这里我们先作用于Create的两个Action就可以了

Authorize属性也可以加一些参数。。。、这里展示先不加
测试页面。

需要一个LoginPartial页面,一旦没有权限就会跳转到这个页面。这里我们先不做,

 

ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门

ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门

一、前言

1、本教程主要内容

  • ASP.NET Core MVC 集成 EF Core 介绍&操作步骤
  • ASP.NET Core MVC 使用 EF Core + Linq to Entity 访问MySQL数据库
  • ASP.NET Core MVC 使用 EF Core + 原生SQL访问MySql数据库
  • EF Core + MySQL数据库插入数据后获取自增列的值

Entity Framework Core 简称为 EF Core

2、本教程环境信息

软件/环境 说明
操作系统 Windows 10
SDK 2.1.401
ASP.NET Core 2.1.3
MySQL 8.0.x
IDE Visual Studio Code 1.30
浏览器 Chrome 70
VS Code插件 版本 说明
C# 1.17.1 提供C#智能感知, .NET Core 调试、编译等
vscdoe-solution-explorer 0.3.1 提供解决方案视图

本篇代码以下代码进行调整:https://github.com/ken-io/asp.net-core-tutorial/tree/master/chapter-02

3、准备工作

安装MySQL数据库:https://dev.mysql.com/downloads/mysql/

  • Windows环境

下载安装包后双击安装,一直下一步即可。

  • MacOS环境

参考:https://ken.io/note/macos-mysql8-install-config-tutorial

  • CentOS环境

参考:https://ken.io/note/centos-mysql8-setup

4、前置知识

  • 控制反转(IOC)原则与依赖注入(DI)

ASP.NET Core 默认集成了DI。所有官方模块的引入都要使用DI的方式引入。

https://baike.baidu.com/item/IOC

  • Linq使用教程

https://docs.microsoft.com/zh-cn/dotnet/csharp/tutorials/working-with-linq

二、EF Core + MySQL 前置准备

EF Core 全称:Entity Framework Core,为微软为 .NET Core平台开发的ORM框架。对应是 .NET Framework平台的 Entity Framework(EF),无论是EF还是EF Core都可以说是 .NET 平台开发效率最高的ORM框架。

1、引入 EF Core + MySQL Provider

EF Core已经集成在 ASP.NET Core 中,但默认并不支持MySQL,如果需要连接MySQL,需要添加MySQL相关的Provider,这里我选择的是:Pomelo.EntityFrameworkCore.MySql

任意命令行操作即可,我用的是VS Code自带的命令行

//进入项目根目录: Ken.Tutorial.Web
cd Ken.Tutorial.Web

//添加Package
dotnet add package Pomelo.EntityFrameworkCore.MySql

这里我添加的 MySql.Data.EntityFrameworkCore 版本是 8.0.13,如果你想跟我使用一样的版本,可以使用以下命令:

dotnet add package Pomelo.EntityFrameworkCore.MySql --version 2.1.4

2、创建MySQL库表

  • 创建数据库
CREATE DATABASE ken_tutorial;
  • 创建表
USE ken_tutorial;

DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, `hobby` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

3、配置链接字符串

在项目根目录Ken.Tutorial.Web中创建配置文件appsettings.json,并写入以下配置

{
  "ConnectionStrings": {
    "testdb": "server=localhost;database=Ken.Tutorial;uid=root;pwd=root;"
  }
}

4、实体&DbContext准备

创建user表对应实体

在项目根目录Ken.Tutorial.Web中创建目录Models,并在其中创建类:UserEntity.cs

using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Ken.Tutorial.Web.Models { [Table("user")] [Serializable] public class UserEntity { [Key]//主键 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]//自增列 [Column("id")] public int Id { get; set; } [Column("name")] public string Name { get; set; } [Column("age")] public int Age { get; set; } [Column("hobby")] public string Hobby { get; set; } } } 

创建DBContext

在项目根目录Ken.Tutorial.Web中创建目录Repositories,并在其中创建类:TutorialDbContext.cs

using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;

namespace Ken.Tutorial.Web.Repositories { public class TutorialDbContext : DbContext { private IConfiguration Configuration { get; } public TutorialDbContext(IConfiguration configuration) { this.Configuration = configuration; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySql(Configuration.GetConnectionString("testdb")); } ppublic DbSet<UserEntity> Users { get; set; } } } 

TutorialDbContext 继承了 DbContext,然后再Context初始化时配置MySQL链接。

由于 ASP.NET Core 默认使用了DI组件,所以我们取配置文件,就需要在构造函数中获取 IConfiguration 注入的实例。

在Startup.cs配置注入,以便数据访问类可以访问DI方式获取TutorialDbContext

public void ConfigureServices(IServiceCollection services) { //引入MVC模块 services.AddMvc(); //配置DbContext注入 services.AddTransient<TutorialDbContext>(); } 

三、EF Core + Linq to entity 访问数据库

1、创建Linq To Entity 数据访问类

using System;
using System.Collections.Generic;
using System.Linq;
using Ken.Tutorial.Web.Models;

namespace Ken.Tutorial.Web.Repositories { public class TutorialRepository { private TutorialDbContext DbContext { get; } public TutorialRepository(TutorialDbContext dbContext) { //在构造函数中注入DbContext this.DbContext = dbContext; } //添加 public int Add(UserEntity user) { using (DbContext) { //由于我们在UserEntity.Id配置了自增列的Attribute,EF执行完成后会自动把自增列的值赋值给user.Id DbContext.Users.Add(user); return DbContext.SaveChanges(); } } //删除 public int Delete(int id) { using (DbContext) { var userFromContext = DbContext.Users.FirstOrDefault(u => u.Id == id); DbContext.Users.Remove(userFromContext); return DbContext.SaveChanges(); } } //更新 public int Update(UserEntity user) { using (DbContext) { var userFromContext = DbContext.Users.FirstOrDefault(u => u.Id == user.Id); userFromContext.Name = user.Name; userFromContext.Age = user.Age; userFromContext.Hobby = user.Hobby; return DbContext.SaveChanges(); } } //查询 public UserEntity QueryById(int id) { using (DbContext) { return DbContext.Users.FirstOrDefault(u => u.Id == id); } } //查询集合 public List<UserEntity> QueryByAge(int age) { using (DbContext) { return DbContext.Users.Where(u => u.Age == age).ToList(); } } //查看指定列 public List<string> QueryNameByAge(int age) { using (DbContext) { return DbContext.Users.Where(u => u.Age == age).Select(u => u.Name).ToList(); } } //分页查询 public List<UserEntity> QueryUserPaging(int pageSize, int page) { using (DbContext) { return DbContext.Users.Skip(pageSize * (page - 1)).Take(pageSize).ToList(); } } //事务:将年龄<0的用户修改年龄为0 public int FixAge() { using (DbContext) { using (var transaction = DbContext.Database.BeginTransaction()) { try { var userListFromContext = DbContext.Users.Where(u => u.Age < 0); foreach (UserEntity u in userListFromContext) { u.Age = 0; } var count = DbContext.SaveChanges(); transaction.Commit(); return count; } catch { transaction.Rollback(); return 0; } } } } } } 

2、创建测试API

Controllers文件夹下创建EfCoreController.cs作为访问入口

using System;
using Ken.Tutorial.Web.Models;
using Ken.Tutorial.Web.Repositories;
using Microsoft.AspNetCore.Mvc;

namespace Ken.Tutorial.Web.Controllers { public class EfCoreController : Controller { public TutorialRepository Repository { get; } public EfCoreController(TutorialRepository repository) { this.Repository = repository; } public IActionResult Add(UserEntity user) { var message = Repository.Add(user) > 0 ? "success" : "failed"; return Json(new { Message = message, User = user }); } public IActionResult Delete(int id) { var message = Repository.Delete(id) > 0 ? "success" : "failed"; return Json(new { Message = message }); } public IActionResult Update(UserEntity user) { var message = Repository.Update(user) > 0 ? "success" : "failed"; return Json(new { Message = message, User = user }); } public IActionResult QueryById(int id) { var user = Repository.QueryById(id); return Json(new { User = user }); } public IActionResult QueryByAge(int age) { var users = Repository.QueryByAge(age); return Json(new { Users = users }); } public IActionResult QueryNameByAge(int age) { var users = Repository.QueryNameByAge(age); return Json(new { Users = users }); } public IActionResult QueryUserPaging(int pageSize, int page) { var users = Repository.QueryUserPaging(pageSize, page); return Json(new { Users = users }); } public IActionResult FixAge() { var count = Repository.FixAge(); return Json(new { FixCount = count }); } } } 

3、启动测试

  • 在Startup.cs中配置Repository注入
public void ConfigureServices(IServiceCollection services) { //其他代码省略 //配置Repository注入 services.AddTransient<TutorialRepository>(); } 
  • 启动项目并测试
API 示例
添加用户 /efcore/add?name=ken&age=18&hobby=coding
删除用户 /efcore/delete?id=0
更新用户 /efcore/update?id=1&name=ken&age=666&hobby=codingOrGaming
查询单个用户 /efcore/querybyid?id=0
查询多个用户 /efcore/querybyage?age=18
查询多个用户名 /efcore/querynamebyage?age=18
分页查询用户 /efcore/queryuserpaging?pagesize=3&page=1
修复异常年龄 /efcore/fixage

四、EF Core + 原生SQL 访问数据库

1、创建EF Core + 原生SQL 数据访问类

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using Ken.Tutorial.Web.Models;
using Microsoft.EntityFrameworkCore;
using MySql.Data.MySqlClient;

namespace Ken.Tutorial.Web.Repositories
{
    public class TutorialWithSqlRepository
    {
        private TutorialDbContext DbContext { get; }

        public TutorialWithSqlRepository(TutorialDbContext dbContext)
        {
            //在构造函数中注入DbContext
            this.DbContext = dbContext;
        }

        //添加
        public int Add(UserEntity user)
        {
            using (var connection = DbContext.Database.GetDbConnection())
            {
                connection.Open();
                var command = connection.CreateCommand() as MySqlCommand;
                command.CommandText = "INSERT INTO user (name,age,hobby) VALUES(@name,@age,@hobby)";
                command.Parameters.Add(new MySqlParameter()
                {
                    ParameterName = "@name",
                    DbType = DbType.String,
                    Value = user.Name
                });
                command.Parameters.Add(new MySqlParameter()
                {
                    ParameterName = "@age",
                    DbType = DbType.Int32,
                    Value = user.Age
                });
                command.Parameters.Add(new MySqlParameter()
                {
                    ParameterName = "@hobby",
                    DbType = DbType.String,
                    Value = user.Hobby
                });
                var count = command.ExecuteNonQuery();
                //获取插入时产生的自增列Id并赋值给user.Id使用
                user.Id = (int)command.LastInsertedId;
                return count;
            }

        }

        //删除
        public int Delete(int id)
        {
            using (DbContext)
            {
                return DbContext.Database.ExecuteSqlCommand(
                    "DELETE FROM user WHERE id={0}", id);
            }
        }

        //更新
        public int Update(UserEntity user)
        {
            using (DbContext)
            {
                return DbContext.Database.ExecuteSqlCommand(
                     "UPDATE user SET name={0}, age={1}, hobby={2} WHERE id={3}",
                      user.Name, user.Age, user.Hobby, user.Id);
            }
        }

        //查询
        public UserEntity QueryById(int id)
        {
            using (DbContext)
            {
                return DbContext.Users.FromSql("SELECT id,name,age,hobby FROM user WHERE id={0}", id).FirstOrDefault();
            }
        }

        //查询集合
        public List<UserEntity> QueryByAge(int age)
        {
            using (DbContext)
            {
                return DbContext.Users.FromSql("SELECT id,name,age,hobby FROM user WHERE age={0}", age).ToList();
            }
        }

        //查看指定列
        public List<string> QueryNameByAge(int age)
        {
            using (DbContext)
            {
                return DbContext.Users.FromSql("SELECT id,name FROM user WHERE age={0}", age).Select(u => u.Name).ToList();
            }
        }

        //分页查询
        public List<UserEntity> QueryUserPaging(int pageSize, int page)
        {
            using (DbContext)
            {
                return DbContext.Users.FromSql("SELECT id,name,age,hobby FROM user LIMIT {0},{1}", pageSize * (page - 1), pageSize).ToList();
            }
        }

        //事务:将年龄<0的用户修改年龄为0
        public int FixAge()
        {
            using (DbContext)
            {
                using (var connection = DbContext.Database.GetDbConnection())
                {
                    //打开连接
                    connection.Open();
                    //开启事务
                    using (var transaction = connection.BeginTransaction())
                    {
                        try
                        {
                            //获取命令对象
                            var command = connection.CreateCommand();
                            command.Transaction = transaction;
                            command.CommandText = "UPDATE user SET age=@age WHERE age<@age";
                            command.Parameters.Add(new MySqlParameter()
                            {
                                ParameterName = "@age",
                                DbType = DbType.Int32,
                                Value = 0
                            });
                            var count = command.ExecuteNonQuery();
                            transaction.Commit();
                            return count;
                        }
                        catch (Exception ex)
                        {
                            connection.Close();
                            transaction.Rollback();
                            return 0;
                        }
                    }

                }
            }
        }
    }
}

2、创建测试API

Controllers文件夹下创建EfCoreWithSqlController.cs作为访问入口

using System;
using Ken.Tutorial.Web.Models;
using Ken.Tutorial.Web.Repositories;
using Microsoft.AspNetCore.Mvc;

namespace Ken.Tutorial.Web.Controllers { public class EfCoreWithSqlController : Controller { public TutorialWithSqlRepository Repository { get; } public EfCoreWithSqlController(TutorialWithSqlRepository repository) { this.Repository = repository; } public IActionResult Add(UserEntity user) { var message = Repository.Add(user) > 0 ? "success" : "failed"; return Json(new { Message = message, User = user }); } public IActionResult Delete(int id) { var message = Repository.Delete(id) > 0 ? "success" : "failed"; return Json(new { Message = message }); } public IActionResult Update(UserEntity user) { var message = Repository.Update(user) > 0 ? "success" : "failed"; return Json(new { Message = message, User = user }); } public IActionResult QueryById(int id) { var user = Repository.QueryById(id); return Json(new { User = user }); } public IActionResult QueryByAge(int age) { var users = Repository.QueryByAge(age); return Json(new { Users = users }); } public IActionResult QueryNameByAge(int age) { var users = Repository.QueryNameByAge(age); return Json(new { Users = users }); } public IActionResult QueryUserPaging(int pageSize, int page) { var users = Repository.QueryUserPaging(pageSize, page); return Json(new { Users = users }); } public IActionResult FixAge() { var count = Repository.FixAge(); return Json(new { FixCount = count }); } } } 

3、启动测试

  • 在Startup.cs中配置Repository注入
public void ConfigureServices(IServiceCollection services) { //其他代码省略 //配置Repository注入 services.AddTransient<TutorialWithSqlRepository>(); } 
  • 启动项目并测试
API 示例
添加用户 /efcorewithsql/add?name=ken&age=18&hobby=coding
删除用户 /efcorewithsql/delete?id=0
更新用户 /efcorewithsql/update?id=1&name=ken&age=666&hobby=codingOrGaming
查询单个用户 /efcorewithsql/querybyid?id=0
查询多个用户 /efcorewithsql/querybyage?age=18
查询多个用户名 /efcorewithsql/querynamebyage?age=18
分页查询用户 /efcorewithsql/queryuserpaging?pagesize=3&page=1
修复异常年龄 /efcorewithsql/fixage

五、备注

1、附录

  • 本文代码示例

https://github.com/ken-io/asp.net-core-tutorial/tree/master/chapter-08

  • 本文参考

https://docs.microsoft.com/zh-cn/ef/core
https://www.learnentityframeworkcore.com
https://mysql-net.github.io/MySqlConnector/tutorials/net-core-mvc/



本文首发于我的独立博客:https://ken.io/note/asp.net-core-tutorial-entity-framework-core-mysql

原文出处:https://www.cnblogs.com/ken-io/p/aspnet-core-tutorial-entity-framework-core-mysql.html

今天关于猕猴桃中没有名为'numpy.core._multiarray_umath'的模块猕猴桃还有其他名称吗的讲解已经结束,谢谢您的阅读,如果想了解更多关于ASP.NET Core (.NET Core) and ASP.NET Core (.NET Framework)区别、ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core、ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 14. ASP.NET Core Identity 入门、ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门的相关知识,请在本站搜索。

本文标签: