官方开发指导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. 配置 dovecat 的 PAM

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  2. PL/pgSQL的 RETURN NEXT例子

    从网上找到例子: 可以说,RETURN NEXT要用在循环中: 例子一: 数据准备: CREATE TABLE foo (fooid INT, foosubid INT, fooname TEXT); ...

  3. ArcObjects SDK(AE)10.1在vs2012安装的方法

    ArcObjects SDK(以下简称AO)10.1只支持vs2010,如果装了vs2012,再安装AO会提示一串鸡肠(英文),意思是AO10.1只支持vs2010 想在2012下安装,可以通过修改注 ...

  4. Struts 2.x异常:Unable to load configuration..../WEB-INF/lib/struts2-convention-plugin-2.1.6.jar!/struts-plugin.xml:30:119

    Struts 2.x异常:Unable to load configuration..../WEB-INF/lib/struts2-convention-plugin-2.1.6.jar!/strut ...

  5. 【转】C++笔试题汇总

    原文:http://www.cnblogs.com/ifaithu/articles/2657663.html C#C++C多线程面试1.static有什么用途?(请至少说明两种)1)在函数体,一个被 ...

  6. RapeLay(电车之狼R)的结局介绍 (隐藏结局攻略)

    RapeLay(电车之狼R)的结局介绍 (隐藏结局) 必备知识要让MM怀孕非常easy.起初刚进入调教模式后.仅仅要H一次 MM就開始有时期状态. 生理(连上有红晕) ->不详状态(闭目第一次) ...

  7. JVM自动内存管理学习笔记

    对于使用 C.C++ 的程序员来说,在内存管理领域,他们既是拥有最高权力的皇帝又是从事最基础工作的劳动人民——拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任.对于 Java 程 ...

  8. 【不怕坑】之 Node.js加密 C#解密

    本人也不太了解AES加密解密,为了解决Node.js加密,但是无法C#解密的问题,在网上搜了大量的相关文章. 但是多数是Node.js vs Java 或 Java vs C#的双向加密解密代码,但是 ...

  9. Android(java)学习笔记74:Java线程池

    线程池: 1)程序启动一个新线程成本是比较高的,因为它涉及到要与操作系统进行交互.而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池. 2)线程池里的每一 ...

  10. Java基础知识强化103:Java常量池理解与总结

    一.相关概念 1. 什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量.实例变量和局部变量,分别表示三种类型的常量. 2. Class文件中的 ...