最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#如何使用Bogus創(chuàng)建模擬數(shù)據(jù)示例代碼

 更新時間:2019年04月29日 09:45:42   作者:Lamond Lu  
這篇文章主要給大家介紹了關(guān)于C#如何使用Bogus創(chuàng)建模擬數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

原文:CREATING SAMPLE DATA FOR C#

作者:Bruno Sonnino

譯文:C#中使用Bogus創(chuàng)建模擬數(shù)據(jù)

譯者: Lamond Lu

背景

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

當(dāng)然以上方案都不完美,也都不穩(wěn)定,所以每次我都需要探索一些新方式來獲取數(shù)據(jù)(對于學(xué)習(xí)來說這很好,但是維護(hù)起來確是一種災(zāi)難)。

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

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

生成模擬數(shù)據(jù)

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

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)建好以上兩個實體類之后,你就可以來添加倉儲來獲取模擬數(shù)據(jù)了。為了使用Bogus, 你可以使用Nuget將Bogus庫添加到你的項目中。

Install-Package Bogus

下面我們就可以來添加一個倉儲類來獲取模擬數(shù)據(jù)了。這里我們添加一個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)镽andomizer.Seed屬性指定一個固定的隨機(jī)種子,因此每次生成的數(shù)據(jù)都是一樣的。如果你不希望每次都生成固定的數(shù)據(jù),你可以去掉這行代碼。

這里我們?yōu)橛唵魏涂蛻魯?shù)據(jù)的生成定義了規(guī)則,然后我們調(diào)用了Generate方法來生成模擬數(shù)據(jù)。就是這么簡單。

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

  • 單元測試的模擬測試數(shù)據(jù)
  • 設(shè)計階段的模擬數(shù)據(jù)
  • 原型的模擬數(shù)據(jù)

但是我確信,你能發(fā)現(xiàn)更多的使用場景。

這里為了使用這些數(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字符串,所以這里你需要添加對Newtonsoft.Json庫的引用。當(dāng)你運(yùn)行程序之后,你會得要以下結(jié)果。

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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • c# webapi 配置swagger的方法

    c# webapi 配置swagger的方法

    這篇文章主要介紹了c# webapi 配置swagger的方法,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C#操作XML方法詳解

    C#操作XML方法詳解

    對于XML讀寫操作,項目中經(jīng)常要用到,之前木有好好總結(jié)過,例如LINQ TO XML也用過,這篇文章主要介紹了C#操作XML的方法
    2021-11-11
  • 如何在datatable中使用groupby進(jìn)行分組統(tǒng)計

    如何在datatable中使用groupby進(jìn)行分組統(tǒng)計

    如何在datatable中進(jìn)行分組,并且計算分組后每組的數(shù)量,考慮了一下,可以使用LINQ來實現(xiàn)datatable分組,需要的朋友可以參考下
    2015-08-08
  • C#如何生成唯一訂單號

    C#如何生成唯一訂單號

    這篇文章主要為大家詳細(xì)介紹了C#如何生成唯一訂單號,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • C# 對象持久化詳解

    C# 對象持久化詳解

    本文介紹的是除數(shù)據(jù)庫之外的幾種對象持久化方式。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • c#入門之實現(xiàn)簡易存款利息計算器示例

    c#入門之實現(xiàn)簡易存款利息計算器示例

    這篇文章主要介紹了c#入門之實現(xiàn)簡易存款利息計算器示例,需要的朋友可以參考下
    2014-04-04
  • C# Hook鉤子實例代碼 截取鍵盤輸入

    C# Hook鉤子實例代碼 截取鍵盤輸入

    C# Hook鉤子實例代碼之截取鍵盤輸入,需要的朋友可以參考下
    2013-05-05
  • C#中重載重寫和覆蓋的定義與區(qū)別

    C#中重載重寫和覆蓋的定義與區(qū)別

    今天小編就為大家分享一篇關(guān)于C#中重載重寫和覆蓋的定義與區(qū)別,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • C# 10分鐘完成百度人臉識別(入門篇)

    C# 10分鐘完成百度人臉識別(入門篇)

    這篇文章主要介紹了C# 10分鐘完成百度人臉識別(入門篇),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • WinForm下 TextBox只允許輸入數(shù)字的小例子

    WinForm下 TextBox只允許輸入數(shù)字的小例子

    WinForm下 TextBox只允許輸入數(shù)字的小例子,需要的朋友可以參考一下
    2013-04-04

最新評論

高阳县| 星子县| 筠连县| 马山县| 芒康县| 瑞金市| 缙云县| 白水县| 年辖:市辖区| 淅川县| 巩留县| 施秉县| 改则县| 无棣县| 兴文县| 沂水县| 西畴县| 华亭县| 蕉岭县| 淮阳县| 威海市| 泗阳县| 通山县| 宜君县| 莱州市| 怀柔区| 昌平区| 辉南县| 石景山区| 临湘市| 淮阳县| 辉县市| 岳池县| 南阳市| 登封市| 灌南县| 新津县| 阳东县| 鸡东县| 漳浦县| 樟树市|