官方开发指导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. Oracle_11g_R2安装详解_for_Windows_7

    Oracle 11g R2安装全攻略 - For Windows 7 图文教程 1.下载Oracle 11g R2的Windows版本,官方下载地址如下: http://download.oracle ...

  2. stm32上的Lava虚拟机开发进度汇报(1)

    这几天我打算在stm32上做一个lava的虚拟机,只要160*80的黑白显示就行了,主要是想怀旧一下,嘿嘿. 目前的进度是图形显示和按键处理完成了,还有文本显示.文件处理.其他函数等. 当然,这都仅是 ...

  3. Codeforces Round #326 (Div. 2) B. Duff in Love 分解质因数

    B. Duff in Love Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/588/proble ...

  4. BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 分块

    2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOn ...

  5. C#三种模拟自动登录和提交POST信息的实现方法

    网页自动登录(提交Post内容)的用途很多,如验证身份.程序升级.网络投票等,以下是用C#实现的方法.       网页自动登录和提交POST信息的核心就是分析网页的源代码(HTML),在C#中,可以 ...

  6. OpenGL 3:画圆

    这次使用OpenGL画圆,而且中间画一个实心的五角星. 1. 画实心五角: 由于之前使用Polygen画会出现故障,或许是各个GPU硬件也会不一样的,所以使用Polygen画实心五角星并不可靠: 所以 ...

  7. 发布站点到远程FTP根目录

    第一步:修改 phpcms/modules/admin/templates/site_add.tpl.php 找到 <legend><?php echo L('release_poi ...

  8. C++ 模板类demo

    #include <iostream> using namespace std; template <typename T> class MyVector { friend o ...

  9. debian的备份与还原

    不管是windows还是linux 备份都很重要 因为配好一个系统是要花很多时间的 出了问题的话 有备份直接还原就可以了 windows下有ghost 那么linux下呢?Linux可以在系统正在运行 ...

  10. MySQL查询缓存详解

    一:缓存条件,原理 MySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集,MySql在实现Query Cache的具体技术细节上类似典型的KV存储,就是将SELE ...