4

我在我的项目中安装了适用于 C# 的 Faker Port ( https://github.com/oriches/faker-cs ),但项目站点没有给出使用示例。

有人可以发布一些基本模拟数据生成的例子吗?

4

2 回答 2

3

在此示例中,我使用的项目使用 MVC4、EF Code First 和自动迁移。所以如果你使用相同的,你的Migrations\Configuration.cs文件应该是这样的:

internal sealed class Configuration : DbMigrationsConfiguration<MyProject.Models.MyProjectContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
    }

...

对于单个元素,这个例子很简单:

protected override void Seed(MyProject.Models.MyProjectContext context)
    {
        context.Customers.AddOrUpdate(
            c => c.Name,
            new Customer { Name = Faker.Name.FullName() }
        );

        context.SaveChanges();

        ...

对于定义数量的元素,我喜欢使用 lambda 表达式的想法,就像Factory Girl(用于 Ruby on Rails)所做的那样。在我提出的另一个问题中(DbMigrations in .NET w/ Code First: How to Repeat Instructions with Expressions),答案用于Enumberable.Range()指定元素数量:

protected override void Seed(MyProject.Models.MyProjectContext context)
{
    context.Companies.AddOrUpdate(
            p => p.Name,
            Enumerable.Range(1, 10).
            Select( x => new Company { Name = Faker.Company.Name() }).ToArray()
    );

    context.SaveChanges();
}

...
于 2013-08-17T06:38:19.773 回答
1

可用资源稀缺,但本文似乎是人们所期望的。

还可以尝试使用程序集/对象浏览器查看可用资源(例如ClassesMethods库中包含哪些 等)。此外,该库包含NUnit测试,因此查看测试的代码也可能是有益的。

由于 Faker.NET 是名为ffaker的 Ruby 库的一个端口,因此也可能暗示代码的意图相似,因此也可以使用 ffaker 的单元测试作为小参考。

于 2013-08-16T08:31:41.347 回答