c# - 随机数据的 BogusFaker ForeignKey 依赖项 - C#
问题描述
当我们使用 ASP.NET MVC 框架时,我们有著名的 AspNetUsers 表,其中包含每个用户的唯一 ID。我想根据创建的“假”用户在其他表中生成数据。如何提取为“ProfileTable”等其他表实际生成的 ID(来自 AspNetUsers)?
for (var i = 0; i < names.Count(); i++)
{
AspNetUserFaker = new Faker<AspNetUser>().StrictMode(false)
.RuleFor(a => a.Id, f => Guid.NewGuid().ToString()) // Randomly
.RuleFor(a => a.FirstName, (f, u) => firstNames[i]) // Preselected known names
.RuleFor(a => a.LastName, (f, u) => lastNames[i])
...
}
然后
ProfileFaker = new Faker<ProfileTable>().StrictMode(false)
// Get Id from the previously created, has to come from AspNetUsers, and only inserted once on this table
.RuleFor(a => a.MemberID, f => f.IndexFaker) // <-- Need help here
.RuleFor(a => a.About, f => f.Lorem.Words())
...
解决方案
这可以通过存储用户 IDQueue
并每次都弹出来解决 - 为每个用户获取 ID,仅此而已。您可能还应该ProfileTable
通过将其限制为现有用户的数量来处理生成的计数。
var ids = new Queue<string>(); //create Queue to store IDs of generated users
for (var i = 0; i < names.Count(); i++)
{
AspNetUserFaker = new Faker<AspNetUser>()
.StrictMode(false)
.RuleFor(a => a.Id, f => Guid.NewGuid().ToString())
...
.Generate(1); //Assums that the user is generated
ids.Enqueue(AspNetUserFaker.Id);
}
ProfileFaker = new Faker<ProfileTable>()
.StrictMode(false)
.RuleFor(a => a.MemberID, f => ids.Dequeue()) // Sets the value from queue
...
.Generate(ids.Count); //Limit the generation for the amount of users
推荐阅读
- ios - iOS 应用程序没有收到推送通知 Swift
- python-3.x - 如何通过 UDP 为 Gazebo 中的模拟相机连接 YOLO V4 的视频流
- ios - 是否可以在不先发现蓝牙特征的情况下访问它?
- java - RuleUnit + Quarkus 示例的 drl 文件 - `modify` 和 `update` 有什么区别?
- c# - 如何处理 try/catch 块未处理并导致 System.TypeInitializationException 的 SQL 错误?
- android - 在 Nativescript 中实现抽象类
- apache-kafka - FilePulse 连接 XML 阅读器返回文件行而不是结构化消息
- python - 在python中每n次从一个多fasta文件中获取序列
- java - 为每个租户自定义 Spring @Scope
- forms - Flutter:从文本中提取 gif url