如何首先将输入插入到 sql 表代码中

Posted

技术标签:

【中文标题】如何首先将输入插入到 sql 表代码中【英文标题】:How to Insert Input into sql table code first ef 【发布时间】:2021-12-10 03:57:58 【问题描述】:

我正在尝试将我的产品属性插入 SQL 表中,我有一个剃须刀页面,该页面获取需要插入的输入数据,但我不知道如何插入它们 这是我的产品型号:

namespace Market.ViewModels

    public class ProductListView
    
        public Guid ID  get; set;  
        public string ProductName  get; set;  
        public decimal ProductPrice  get; set;  

        
    

这是我的剃须刀页面:

【问题讨论】:

到目前为止,您采取了哪些步骤来使 Entity Framework 运行? 了解tutorial 【参考方案1】:

我做了一个简单的例子,先用EF Core代码创建数据库再查询数据,将值绑定到页面的过程如下。

1.第一个使用的依赖包如下:

型号:

 public class ProductListView
    

        [Key]
        public Guid ID  get; set; 
        public string ProductName  get; set; 
        public double ProductPrice  get; set; 
    

我修改了您的 ProductPrice 类型,因为在迁移过程中这种类型会出现问题。如果必须更改类型,请参考这篇文章:

http://jameschambers.com/2019/06/No-Type-Was-Specified-for-the-Decimal-Column/

创建模型和上下文类:

现在您可以添加数据库上下文了 :将类命名为TestDbContext并点击Add,将TestDbContext.cs中的代码修改如下:

 public class TestDbContext:DbContext
    
        public TestDbContext(DbContextOptions<TestDbContext> options) : base(options)
        
                
        

        public DbSet<ProductListView> productListViews  get; set; 
    

您需要在appsetting.json文件中写入如下连接字符串:

 "ConnectionStrings": 
    "DefaultDatabase": "Your DB"
  

在 ASP.NET Core 中,数据库上下文等服务必须注册到依赖注入容器中。容器为控制器提供服务。 使用以下突出显示的代码更新 Startup.cs:

   public void ConfigureServices(IServiceCollection services)
            
                services.AddControllersWithViews();
                services.AddDbContext<TestDbContext>(item => item.UseSqlServer(Configuration.GetConnectionString("DefaultDatabase")));
            

为了创建迁移代码,我们使用“add-migration MigrationName”命令。添加迁移命令执行成功后,会在项目中创建一个名为“Migration”的文件夹。我们只创建了负责创建数据库及其表的迁移。脚本。但是我们还没有创建实际的数据库和表。所以让我们执行迁移脚本并生成数据库和表。因此,要执行迁移脚本我们必须执行'update-database'命令。

接下来,让我们创建一个上下文类,定义数据库连接并注册上下文。然后在控制器中执行查询工作,然后返回数据。

 public class TestController : Controller
    

        private readonly TestDbContext _context;

        public TestController(TestDbContext context)
        
            _context = context;
        
        public IActionResult Test(ProductListView product)
        
            var value = _context.productListViews.SingleOrDefault(item => item.ProductPrice == 12.1);

            product.ProductName = value.ProductName;
            product.ProductPrice = value.ProductPrice;
           
            return View(product);
        
    

查看:

@model WebApplication132.Models.ProductListView
<h1>AddProducts</h1>

<div class="row">
    <div class="col-md-12">
        <form method="post">
            <div asp-validation-summary="All" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="ProductName"></label>
                <input asp-for="ProductName" class="form-control" />
            </div>

            <div class="form-group">
                <label asp-for="ProductPrice"></label>
                <input asp-for="ProductPrice" class="form-control" />
            </div>

            <button type="Add Product" class="btn-primary">Add Product</button>
        </form>
    </div>
</div>

数据库数据:

结果:

【讨论】:

以上是关于如何首先将输入插入到 sql 表代码中的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句 如何将已知数据和查询一个表中的数据一起插入另一个表

如何将记录插入到 sql server express 数据库表中?

sql server如何如何从一个表中提取部分资讯插入到另一表中

如何使用vb6.0将数据从文本框插入到sql表

如何将文本文件中的数据从Java插入SQL Server?

如何使用 SQL 中的 Case 语句将数据插入临时表