官方开发指导https://autopoco.codeplex.com/documentation

初步使用:

SimpleUser是自己要批量创建的类

1)创建管理工厂

 IGenerationSessionFactory factory = AutoPocoContainer.Configure(x =>

 {

     x.Conventions(c =>

     {

         c.UseDefaultConventions();

     });

     x.AddFromAssemblyContainingType<SimpleUser>();

 });

2) 从工厂中创建会话

IGenerationSession session = factory.CreateSession();

3) 使用会话创建集合,List中的100表示创建含一百个元素的集合,创建的时候并没对集合中的元素进行赋值。

 SimpleUser user = session.Single<SimpleUser>().Get();

 List<SimpleUser> users = session.List<SimpleUser>().Get();

在初步的基础上进行赋值

 session.List<SimpleUser>()

                  .First()

                       .Impose(x => x.FirstName, "Rob")

                       .Impose(x => x.LastName, "Ashton")

                   .Next()

                       .Impose(x => x.FirstName, "Luke")

                       .Impose(x => x.LastName, "Smith")

                   .All().Random()

                       .Impose(x => x.Role,roleOne)

                   .Next()

                       .Impose(x => x.Role,roleTwo)

                   .Next()

                       .Impose(x => x.Role, roleThree)

                  .All()

                       .Invoke(x => x.SetPassword("Password1"))

                  .Get();

测试发现:

1、Next方法必须在First 或者Random使用之后才能使用,并且First只能使用一次在没调用All方法之前,First、Random、Next使用完之后必须调用All方法;

2、每次只能为一个属性赋值;

从数据源中创建

 mFactory = AutoPocoContainer.Configure(x =>

 {

     x.Conventions(c =>

     {

         c.UseDefaultConventions();

     });

     x.AddFromAssemblyContainingType<SimpleUser>();

     x.Include<SimpleUser>()

         .Setup(c => c.EmailAddress).Use<EmailAddressSource>()

         .Setup(c => c.FirstName).Use<FirstNameSource>()

         .Setup(c => c.LastName).Use<LastNameSource>()

         .Invoke(c => c.SetPassword(Use.Source<String, PasswordSource>()));

     x.Include<SomeType>()

         .Setup(c => c.SomeString).Use<RandomStringSource>(,);

 });

Use中的泛型就是传递给集合元素实例数据源,是个类。该类必须继承抽象泛型类DatasourceBase<T>  泛型T表示对应属性的数据类型。该抽象类中只有一个抽象方法Next,该方法就是返回数据给属性,实现给属性赋值。从而达到数据绑定;

在Conventions中实现数据源绑定

For example

 A convention to set all String EmailAddress properties to use the EmailAddressSource

 public class EmailAddressPropertyConvention : ITypePropertyConvention

 {

     public void Apply(ITypePropertyConventionContext context)

     {

         context.SetSource<EmailAddressSource>();

     }

     public void SpecifyRequirements(ITypeMemberConventionRequirements requirements)

     {

         requirements.Name(x => String.Compare(x, "EmailAddress", true) == );

         requirements.Type(x => x == typeof(String));

     }

 }

 A convention to set all String EmailAddress fields to use the EmailAddressSource

 public class EmailAddressFieldConvention : ITypeFieldConvention

 {

     public void Apply(ITypeFieldConventionContext context)

     {

         context.SetSource<EmailAddressSource>();

     }

     public void SpecifyRequirements(ITypeMemberConventionRequirements requirements)

     {

         requirements.Name(x => String.Compare(x, "EmailAddress", true) == );

         requirements.Type(x => x == typeof(String));

     }

 }

 x.Conventions(c => c.Register(typeof(IdPropertyConvention)));

 x.AddFromAssemblyContainingType<SimpleUser>();

在context中有个Setvalue方法 ,应该是给绑定数据源传值的,测试使用的时候并没有效果,传递多个值理论是使用的数组。问题未解决。

AutoPoco的使用的更多相关文章

  1. .Net程序员飞扬有用的85个工具

    1.Visual Studio Visual Studio Productivity Power tool:Visual Studio专业版(及以上)的扩展,具有丰富的功能,如快速查找,导航解决方案, ...

  2. 实用的VS工具

    工具 1.Visual Studio Visual Studio Productivity Power tool:Visual Studio专业版(及以上)的扩展,具有丰富的功能,如快速查找,导航解决 ...

  3. 对ASP.NET程序员非常有用的85个工具

    介绍 这篇文章列出了针对 ASP.NET 开发人员的有用工具. 工具 1. Visual Studio Visual Studio Productivity Power tool:Visual Stu ...

  4. 推荐几个对Asp.Net开发者比较实用的工具

    推荐几个对Asp.Net开发者比较实用的工具.大家有相关工具也可以在评论区留言,一起努力学习. 工具 1.Visual stdio Productivity Power tool:visual std ...

  5. .Net开发工程师工具箱

    Visual Studio Visual Studio Productivity Power tool:Visual Studio专业版(及以上)的扩展,具有丰富的功能,如快速查找,导航解决方案,可搜 ...

  6. asp.net 工具

    http://www.jb51.net/article/92465.htm 这篇文章列出了针对ASP.NET开发人员的有用工具. 工具 1.Visual Studio Visual Studio Pr ...

随机推荐

  1. WinForms 新窗体后台打开完美的解决

    最近在做浏览器开发时,想要实现 IE 6那种多窗体,又允许后台打开而不抢占视野的方式. WinForms 应用程序中想要后台打开一个新的窗体,而不(抢焦).(遮挡)目前窗体. 需要注意的是,SW_SH ...

  2. ADO.NET 快速入门(二):执行命令

    Commands发出针对数据库的数据存储动作.例如,你可以执行一条命令插入或者删除数据.获取更多从数据库移动数据相关的信息,请参考“Update a Database from a DataSet”. ...

  3. iOS常用动画代码

    使用前 需引入QuartzCore.framework, 并在相关文件中加入 #import "QuartzCore/QuartzCore.h" 定义 shakeFeedbackO ...

  4. Java中throws和throw的区别讲解

    当然,你需要明白异常在Java中式以一个对象来看待.并且所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示, ...

  5. hdu 2037 今年暑假不AC (java)

    问题: 此题为贪心算法入门,思路是先将各个时间段依照结束时间进行排序(按结束越早遍历.节目愈多), 再从第一个节目開始,假设下一节目開始时间大于上一节目的開始时间则进行该节目.依次递推. 输入时,要求 ...

  6. some scrum screenshots

    backlog tracking progress Initial Stage Next Stage End

  7. MHA手动切换 原创1(主故障)

    MHA提供了3种方式用于实现故障转移,分别自动故障转移,需要启用MHA监控: 在无监控的情况下的手动故障转移以及基于在线手动切换. 三种方式可以应对MySQL主从故障的任意场景.本文主要描述在无监控的 ...

  8. JS中URL编码参数(UrlEncode)

    JS中URL编码参数(UrlEncode) 网上有很多文字作品写涉及在JS中呈现类似UrlEncode功能时都是自定义参数来呈现,其实JS中本身就有那样的参数.参数parameter由于用类似URL的 ...

  9. FE—— Code First 初体验 01(转)

    EF Code First 初体验   Code First 顾名思义就是先代码,再由代码生成数据库的开发方式. 废话不多说,直接来一发看看:在VS2010里新建一个空白解决方案,再依次添加两个类库项 ...

  10. Recommended you 3 most popular Nissan pincode calculators

    Have you still felt confused on how to choose a satisfactory Nissan pin code calculator in the marke ...