Files
XCool f25b0307db
Some checks failed
CI/CD Pipeline / 测试 (18.x) (push) Has been cancelled
CI/CD Pipeline / 测试 (20.x) (push) Has been cancelled
CI/CD Pipeline / 安全检查 (push) Has been cancelled
CI/CD Pipeline / 部署 (push) Has been cancelled
CI/CD Pipeline / 通知 (push) Has been cancelled
初始化
2025-11-03 19:47:36 +08:00

266 lines
10 KiB
C#

using Microsoft.EntityFrameworkCore;
using HardwarePerformance.Core.Entities;
namespace HardwarePerformance.Infrastructure.Data
{
public class DataSeeder
{
public static void SeedData(AppDbContext context)
{
// 确保数据库已创建
context.Database.EnsureCreated();
// 检查是否已有数据
if (context.Categories.Any())
{
return; // 数据库已有数据,不需要种子数据
}
// 添加初始产品类别
var categories = new List<Category>
{
new Category
{
Name = "手机CPU",
Description = "移动设备处理器性能排名"
},
new Category
{
Name = "手机GPU",
Description = "移动设备图形处理器性能排名"
},
new Category
{
Name = "电脑CPU",
Description = "桌面和笔记本处理器性能排名"
},
new Category
{
Name = "电脑GPU",
Description = "桌面和笔记本图形处理器性能排名"
}
};
context.Categories.AddRange(categories);
context.SaveChanges();
// 添加初始数据源
var dataSources = new List<DataSource>
{
new DataSource
{
Name = "Geekbench",
Description = "跨平台处理器和内存性能测试工具",
Url = "https://browser.geekbench.com/"
},
new DataSource
{
Name = "3DMark",
Description = "游戏和图形性能基准测试工具",
Url = "https://www.3dmark.com/"
},
new DataSource
{
Name = "AnTuTu",
Description = "移动设备综合性能测试平台",
Url = "https://www.antutu.com/"
}
};
context.DataSources.AddRange(dataSources);
context.SaveChanges();
// 添加一些示例产品数据
var mobileCpuCategory = context.Categories.FirstOrDefault(c => c.Name == "手机CPU");
var mobileGpuCategory = context.Categories.FirstOrDefault(c => c.Name == "手机GPU");
var desktopCpuCategory = context.Categories.FirstOrDefault(c => c.Name == "电脑CPU");
var desktopGpuCategory = context.Categories.FirstOrDefault(c => c.Name == "电脑GPU");
var geekbenchSource = context.DataSources.FirstOrDefault(s => s.Name == "Geekbench");
var threeDMarkSource = context.DataSources.FirstOrDefault(s => s.Name == "3DMark");
var antutuSource = context.DataSources.FirstOrDefault(s => s.Name == "AnTuTu");
if (mobileCpuCategory != null && geekbenchSource != null)
{
var mobileCpus = new List<Product>
{
new Product
{
Name = "Apple A17 Pro",
Model = "A17 Pro",
Manufacturer = "Apple",
ReleaseDate = new DateTime(2023, 9, 1),
ImageUrl = "/images/apple-a17-pro.jpg",
CategoryId = mobileCpuCategory.Id,
CurrentRank = 1
},
new Product
{
Name = "Snapdragon 8 Gen 3",
Model = "SM8650-AB",
Manufacturer = "Qualcomm",
ReleaseDate = new DateTime(2023, 10, 1),
ImageUrl = "/images/snapdragon-8-gen-3.jpg",
CategoryId = mobileCpuCategory.Id,
CurrentRank = 2
},
new Product
{
Name = "MediaTek Dimensity 9300",
Model = "MT6989",
Manufacturer = "MediaTek",
ReleaseDate = new DateTime(2023, 11, 1),
ImageUrl = "/images/dimensity-9300.jpg",
CategoryId = mobileCpuCategory.Id,
CurrentRank = 3
}
};
context.Products.AddRange(mobileCpus);
context.SaveChanges();
// 添加性能分数
var performanceScores = new List<PerformanceScore>();
foreach (var cpu in mobileCpus)
{
performanceScores.Add(new PerformanceScore
{
ProductId = cpu.Id,
TestName = "Single-Core",
Score = cpu.Name.Contains("A17") ? 2950 : cpu.Name.Contains("Snapdragon") ? 2300 : 2200,
TestDate = DateTime.Now,
DataSourceId = geekbenchSource.Id
});
performanceScores.Add(new PerformanceScore
{
ProductId = cpu.Id,
TestName = "Multi-Core",
Score = cpu.Name.Contains("A17") ? 7200 : cpu.Name.Contains("Snapdragon") ? 7400 : 7500,
TestDate = DateTime.Now,
DataSourceId = geekbenchSource.Id
});
}
context.PerformanceScores.AddRange(performanceScores);
context.SaveChanges();
// 添加规格参数
var specifications = new List<Specification>();
foreach (var cpu in mobileCpus)
{
if (cpu.Name.Contains("A17"))
{
specifications.Add(new Specification
{
ProductId = cpu.Id,
Name = "制程工艺",
Value = "3nm",
Unit = "nm"
});
specifications.Add(new Specification
{
ProductId = cpu.Id,
Name = "核心数",
Value = "6",
Unit = "核"
});
}
else if (cpu.Name.Contains("Snapdragon"))
{
specifications.Add(new Specification
{
ProductId = cpu.Id,
Name = "制程工艺",
Value = "4nm",
Unit = "nm"
});
specifications.Add(new Specification
{
ProductId = cpu.Id,
Name = "核心数",
Value = "8",
Unit = "核"
});
}
else if (cpu.Name.Contains("Dimensity"))
{
specifications.Add(new Specification
{
ProductId = cpu.Id,
Name = "制程工艺",
Value = "4nm",
Unit = "nm"
});
specifications.Add(new Specification
{
ProductId = cpu.Id,
Name = "核心数",
Value = "8",
Unit = "核"
});
}
}
context.Specifications.AddRange(specifications);
context.SaveChanges();
}
if (desktopCpuCategory != null && geekbenchSource != null)
{
var desktopCpus = new List<Product>
{
new Product
{
Name = "Intel Core i9-14900K",
Model = "i9-14900K",
Manufacturer = "Intel",
ReleaseDate = new DateTime(2023, 10, 1),
ImageUrl = "/images/intel-i9-14900k.jpg",
CategoryId = desktopCpuCategory.Id,
CurrentRank = 1
},
new Product
{
Name = "AMD Ryzen 9 7950X",
Model = "Ryzen 9 7950X",
Manufacturer = "AMD",
ReleaseDate = new DateTime(2023, 9, 1),
ImageUrl = "/images/amd-ryzen9-7950x.jpg",
CategoryId = desktopCpuCategory.Id,
CurrentRank = 2
}
};
context.Products.AddRange(desktopCpus);
context.SaveChanges();
// 添加性能分数
var performanceScores = new List<PerformanceScore>();
foreach (var cpu in desktopCpus)
{
performanceScores.Add(new PerformanceScore
{
ProductId = cpu.Id,
TestName = "Single-Core",
Score = cpu.Name.Contains("Intel") ? 3200 : 2300,
TestDate = DateTime.Now,
DataSourceId = geekbenchSource.Id
});
performanceScores.Add(new PerformanceScore
{
ProductId = cpu.Id,
TestName = "Multi-Core",
Score = cpu.Name.Contains("Intel") ? 22000 : 30000,
TestDate = DateTime.Now,
DataSourceId = geekbenchSource.Id
});
}
context.PerformanceScores.AddRange(performanceScores);
context.SaveChanges();
}
}
}
}