You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于ASP.Net MVC框架批量向数据库添加记录的实现方法

批量导入Photo记录到数据库的实现方案

嗨,既然你已经搞定了单条记录的CRUD功能,要扩展成批量导入其实非常简单~我基于.NET生态下最常用的Entity Framework Core,给你两种实用的实现方式,都是围绕你的数据数组来处理:

方式一:逐行循环创建实体(逻辑直观)

这种方式适合数据量不大的场景,每一步都清晰可控:

首先,假设你的数据源是一个包含所需字段的集合(数组、List都可以),示例如下:

// 替换成你实际的数据源数组
var photoDataSource = new[]
{
    new { ListingId = 3, LocationName = "mountain_01.jpg", DateUploaded = DateTime.UtcNow, Description = "雪山远景" },
    new { ListingId = 3, LocationName = "mountain_02.jpg", DateUploaded = DateTime.UtcNow, Description = "山间溪流" },
    // 更多待导入的记录...
};

接下来,通过DbContext实例遍历数据源,创建Photo实体并添加到上下文,最后一次性提交所有更改:

// ASP.NET Core项目建议通过依赖注入获取DbContext,这里用实例化做示例
using var dbContext = new YourDbContext();

foreach (var item in photoDataSource)
{
    var newPhoto = new Photo
    {
        ListingId = item.ListingId,
        LocationAndName = item.LocationName, // 注意模型字段是LocationAndName,和数据源的LocationName对应
        DateUploaded = item.DateUploaded,
        Description = item.Description
    };

    dbContext.Photos.Add(newPhoto);
}

// **重点:一次性保存所有更改**,比在循环内每次调用SaveChanges效率高很多
await dbContext.SaveChangesAsync();

方式二:用AddRange批量添加(代码更简洁)

如果不想写foreach循环,可以用LINQ直接把数据源转换成Photo实体集合,再批量添加:

using var dbContext = new YourDbContext();

// 用LINQ将数据源转换为Photo实体列表
var photoEntities = photoDataSource.Select(item => new Photo
{
    ListingId = item.ListingId,
    LocationAndName = item.LocationName,
    DateUploaded = item.DateUploaded,
    Description = item.Description
}).ToList();

// 批量添加到上下文
dbContext.Photos.AddRange(photoEntities);

// 提交更改
await dbContext.SaveChangesAsync();

额外优化小贴士

  • 如果你的数据量很大(比如上千条甚至更多),建议分批次保存,避免内存占用过高:比如每100条记录调用一次SaveChangesAsync,然后用dbContext.ChangeTracker.Clear()清空上下文的追踪缓存。
  • 如果DateUploaded字段是要记录当前上传时间,可以在模型里设置默认值(比如public DateTime DateUploaded { get; set; } = DateTime.UtcNow;),不用从数据源传入。
  • 记得处理异常:比如数据库连接失败、字段验证错误等,可以用try-catch块包裹保存逻辑,避免程序崩溃。

内容的提问来源于stack exchange,提问作者Aron Grzywaczewski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:47:42