国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#如何使用Bogus創建模擬數據示例代碼

2020-01-24 00:05:44
字體:
來源:轉載
供稿:網友

原文:CREATING SAMPLE DATA FOR C#

作者:Bruno Sonnino

譯文:C#中使用Bogus創建模擬數據

譯者: Lamond Lu

背景

在我每次寫技術類博文的時候,經常做的一件事就是創建模擬數據。在每篇博文中,為了解釋某些概念,我需要創建許多模擬數據。這是一個我在實際中遇到的問題,因為我需要為我的程序找到一些合適的數據。有些時候,我會從數據庫中找一些數據(Northwind和AdventureWorks都是我的好朋友^.^), 有些時候,我會使用一些現成的Json或者Xml數據,當然有時候我只能自己手動創建一些數據。

當然以上方案都不完美,也都不穩定,所以每次我都需要探索一些新方式來獲取數據(對于學習來說這很好,但是維護起來確是一種災難)。

最后我找到了Bogus, 一個基于C#的簡單數據生成器。

使用Bogus生成模擬數據, 你只需要定義規則并生成數據即可,就是這么簡單。而且Bogus可以生成固定數據或者變化數據。這樣一旦你拿到了這些數據,你就可以把它們序列化成你想要的格式: json, xml,數據庫或者文本文件。

生成模擬數據

為了生成模擬數據,我們首先需要針對模擬數據創建對應的實體類。這里我們可以創建一個命令行程序,并添加一下兩個類。

public class Customer{ public Guid Id { get; set; } public string Name { get; set; } public string Address { get; set; } public string City { get; set; } public string Country { get; set; } public string ZipCode { get; set; } public string Phone { get; set; } public string Email { get; set; } public string ContactName { get; set; } public IEnumerable<Order> Orders { get; set; }}
public class Order{ public Guid Id { get; set; } public DateTime Date { get; set; } public Decimal OrderValue { get; set; } public bool Shipped { get; set; }}

在你創建好以上兩個實體類之后,你就可以來添加倉儲來獲取模擬數據了。為了使用Bogus, 你可以使用Nuget將Bogus庫添加到你的項目中。

Install-Package Bogus

下面我們就可以來添加一個倉儲類來獲取模擬數據了。這里我們添加一個SampleCustomerRepository類,并加入以下方法。

public IEnumerable<Customer> GetCustomers(){ Randomizer.Seed = new Random(123456); var ordergenerator = new Faker<Order>()  .RuleFor(o => o.Id, Guid.NewGuid)  .RuleFor(o => o.Date, f => f.Date.Past(3))  .RuleFor(o => o.OrderValue, f => f.Finance.Amount(0, 10000))  .RuleFor(o => o.Shipped, f => f.Random.Bool(0.9f)); var customerGenerator = new Faker<Customer>()  .RuleFor(c => c.Id, Guid.NewGuid())  .RuleFor(c => c.Name, f => f.Company.CompanyName())  .RuleFor(c => c.Address, f => f.Address.FullAddress())  .RuleFor(c => c.City, f => f.Address.City())  .RuleFor(c => c.Country, f => f.Address.Country())  .RuleFor(c => c.ZipCode, f => f.Address.ZipCode())  .RuleFor(c => c.Phone, f => f.Phone.PhoneNumber())  .RuleFor(c => c.Email, f => f.Internet.Email())  .RuleFor(c => c.ContactName, (f, c) => f.Name.FullName())  .RuleFor(c => c.Orders, f => ordergenerator.Generate(f.Random.Number(10)).ToList()); return customerGenerator.Generate(100);}

這里的第三行代碼,我們為Randomizer.Seed屬性指定一個固定的隨機種子,因此每次生成的數據都是一樣的。如果你不希望每次都生成固定的數據,你可以去掉這行代碼。

這里我們為訂單和客戶數據的生成定義了規則,然后我們調用了Generate方法來生成模擬數據。就是這么簡單。

如上所見,Bogus提供了許多類來生成數據。例如Company類可以用來生成公司模擬數據,例如公司名稱。你可以使用這些生成的數據作為你程序的模擬數據,這些數據有3種使用場景

  • 單元測試的模擬測試數據
  • 設計階段的模擬數據
  • 原型的模擬數據

但是我確信,你能發現更多的使用場景。

這里為了使用這些數據,你可以在Main方法中加入以下代碼

static void Main(string[] args){ var repository = new SampleCustomerRepository(); var customers = repository.GetCustomers(); Console.WriteLine(JsonConvert.SerializeObject(customers,   Formatting.Indented));}

這里我們將模擬數據轉換成了Json字符串,所以這里你需要添加對Newtonsoft.Json庫的引用。當你運行程序之后,你會得要以下結果。

如上所見,程序生成了一個顧客的數據集,并附帶了每個顧客的所有訂單信息。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大名县| 云安县| 玉林市| 清原| 安新县| 抚顺县| 吴江市| 深水埗区| 安康市| 正蓝旗| 凤翔县| 诸城市| 贵德县| 盖州市| 堆龙德庆县| 马公市| 丰宁| 措勤县| 南岸区| 九江县| 金坛市| 轮台县| 大荔县| 连云港市| 太保市| 福鼎市| 岑巩县| 河曲县| 荣成市| 丰顺县| 凤山市| 阿拉善盟| 平湖市| 新源县| 江安县| 韶山市| 乌兰察布市| 吴桥县| 安吉县| 鲁山县| 芒康县|