您好,登錄后才能下訂單哦!
這篇文章主要介紹了在C#中使用Bogus去創(chuàng)建模擬數(shù)據(jù)的方法,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
Bogus, 一個(gè)基于C#的簡(jiǎn)單數(shù)據(jù)生成器。使用Bogus生成模擬數(shù)據(jù), 你只需要定義規(guī)則并生成數(shù)據(jù)即可,就是這么簡(jiǎn)單。而且Bogus可以生成固定數(shù)據(jù)或者變化數(shù)據(jù)。這樣一旦你拿到了這些數(shù)據(jù),你就可以把它們序列化成你想要的格式: json, xml,數(shù)據(jù)庫(kù)或者文本文件。
為了生成模擬數(shù)據(jù),我們首先需要針對(duì)模擬數(shù)據(jù)創(chuàng)建對(duì)應(yīng)的實(shí)體類。這里我們可以創(chuàng)建一個(gè)命令行程序,并添加一下兩個(gè)類。
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; } }
在你創(chuàng)建好以上兩個(gè)實(shí)體類之后,你就可以來添加倉(cāng)儲(chǔ)來獲取模擬數(shù)據(jù)了。為了使用Bogus, 你可以使用Nuget將Bogus庫(kù)添加到你的項(xiàng)目中。
Install-Package Bogus
相關(guān)教程:C#視頻教程
下面我們就可以來添加一個(gè)倉(cāng)儲(chǔ)類來獲取模擬數(shù)據(jù)了。這里我們添加一個(gè)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); }
這里的第三行代碼,我們?yōu)?code>Randomizer.Seed屬性指定一個(gè)固定的隨機(jī)種子,因此每次生成的數(shù)據(jù)都是一樣的。如果你不希望每次都生成固定的數(shù)據(jù),你可以去掉這行代碼。
這里我們?yōu)橛唵魏涂蛻魯?shù)據(jù)的生成定義了規(guī)則,然后我們調(diào)用了Generate
方法來生成模擬數(shù)據(jù)。就是這么簡(jiǎn)單。
如上所見,Bogus提供了許多類來生成數(shù)據(jù)。例如Company
類可以用來生成公司模擬數(shù)據(jù),例如公司名稱。你可以使用這些生成的數(shù)據(jù)作為你程序的模擬數(shù)據(jù),這些數(shù)據(jù)有3種使用場(chǎng)景
但是我確信,你能發(fā)現(xiàn)更多的使用場(chǎng)景。
這里為了使用這些數(shù)據(jù),你可以在Main
方法中加入以下代碼
static void Main(string[] args) { var repository = new SampleCustomerRepository(); var customers = repository.GetCustomers(); Console.WriteLine(JsonConvert.SerializeObject(customers, Formatting.Indented)); }
這里我們將模擬數(shù)據(jù)轉(zhuǎn)換成了Json字符串,所以這里你需要添加對(duì)Newtonsoft.Json
庫(kù)的引用。當(dāng)你運(yùn)行程序之后,你會(huì)得要以下結(jié)果。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享在C#中使用Bogus去創(chuàng)建模擬數(shù)據(jù)的方法內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。