参考:http://www.castleproject.org/index.php/ActiveRecord:Getting_Started
映射关系文档:http://www.castleproject.org/index.php/ActiveRecord:Mappings
依赖包:
映射关系文档:http://www.castleproject.org/index.php/ActiveRecord:Mappings
依赖包:
You must reference the following set of assemblies to use ActiveRecord:
- Castle.ActiveRecord.dll
- Castle.Model.dll
- Nullables.dll
But ActiveRecord also depends on NHibernate, so you must reference the following as well:
- NHibernate.dll
- Castle.DynamicProxy.dll (Curious? Check DynamicProxy)
- Nullables.NHibernate.dll
- log4net.dll
- Iesi.Collections.dll
总之只要安装了 Castle.msi ,把以上包全部加进去就好了。
另外,本试验用到了 VS.NET 的测试驱动外挂 TestDriver.NET 2.0,需要安装的
下载:TestDriven.NET-2.0.1545d.zip
Blog.cs 内容:
using System;
using Castle.ActiveRecord;
namespace test
{
/// <summary>
/// Blog 的摘要说明。
/// </summary>
[ActiveRecord("Blogs")]
public class Blog : ActiveRecordBase
{
public Blog()
{
}
private int _id;
private String _name;
private String _author;
[PrimaryKey(PrimaryKeyType.Native, "blog_id")]
public int Id
{
get { return _id; }
set { _id = value; }
}
[Property("blog_name")]
public String Name
{
get { return _name; }
set { _name = value; }
}
[Property("blog_author")]
public String Author
{
get { return _author; }
set { _author = value; }
}
public static void DeleteAll()
{
DeleteAll( typeof(Blog) );
}
public static Blog[] FindAll()
{
return (Blog[]) FindAll( typeof(Blog) );
}
public static Blog Find(int id)
{
return (Blog) FindByPrimaryKey( typeof(Blog), id );
}
}
}
using Castle.ActiveRecord;
namespace test
{
/// <summary>
/// Blog 的摘要说明。
/// </summary>
[ActiveRecord("Blogs")]
public class Blog : ActiveRecordBase
{
public Blog()
{
}
private int _id;
private String _name;
private String _author;
[PrimaryKey(PrimaryKeyType.Native, "blog_id")]
public int Id
{
get { return _id; }
set { _id = value; }
}
[Property("blog_name")]
public String Name
{
get { return _name; }
set { _name = value; }
}
[Property("blog_author")]
public String Author
{
get { return _author; }
set { _author = value; }
}
public static void DeleteAll()
{
DeleteAll( typeof(Blog) );
}
public static Blog[] FindAll()
{
return (Blog[]) FindAll( typeof(Blog) );
}
public static Blog Find(int id)
{
return (Blog) FindByPrimaryKey( typeof(Blog), id );
}
}
}
BlogManager.cs 内容:
using System;
using System.Collections;
namespace test
{
/// <summary>
/// BlogManager 的摘要说明。
/// </summary>
public class BlogManager
{
private static BlogManager instance = null;
public BlogManager()
{
}
public static BlogManager getInstance()
{
if(instance==null)
instance=new BlogManager();
return instance;
}
public bool CreateBlog(Blog blog)
{
blog.Create();
return true;
}
}
}
using System.Collections;
namespace test
{
/// <summary>
/// BlogManager 的摘要说明。
/// </summary>
public class BlogManager
{
private static BlogManager instance = null;
public BlogManager()
{
}
public static BlogManager getInstance()
{
if(instance==null)
instance=new BlogManager();
return instance;
}
public bool CreateBlog(Blog blog)
{
blog.Create();
return true;
}
}
}
_TestUnitCase\BlogTest.cs 内容:
using System;
using NUnit.Framework;
using test;
using System.Reflection;
using Castle.ActiveRecord.Framework.Config;
using Castle.ActiveRecord;
namespace test._TestUnitCase
{
/// <summary>
/// BlogTest 的摘要说明。
/// </summary>
[TestFixture]
public class BlogTest
{
public BlogTest()
{
}
[Test]
public void CreateBlogTest()
{
Assembly assembly = typeof(test.Blog).Assembly;
XmlConfigurationSource src = new XmlConfigurationSource(assembly.GetManifestResourceStream("test.ActiveRecord.config"));
ActiveRecordStarter.Initialize( src, typeof(Blog) );
Blog blog = new Blog();
blog.Name="abcde1234";
blog.Author="stephenabcdef";
Console.WriteLine(BlogManager.getInstance().CreateBlog(blog));
}
}
}
using NUnit.Framework;
using test;
using System.Reflection;
using Castle.ActiveRecord.Framework.Config;
using Castle.ActiveRecord;
namespace test._TestUnitCase
{
/// <summary>
/// BlogTest 的摘要说明。
/// </summary>
[TestFixture]
public class BlogTest
{
public BlogTest()
{
}
[Test]
public void CreateBlogTest()
{
Assembly assembly = typeof(test.Blog).Assembly;
XmlConfigurationSource src = new XmlConfigurationSource(assembly.GetManifestResourceStream("test.ActiveRecord.config"));
ActiveRecordStarter.Initialize( src, typeof(Blog) );
Blog blog = new Blog();
blog.Name="abcde1234";
blog.Author="stephenabcdef";
Console.WriteLine(BlogManager.getInstance().CreateBlog(blog));
}
}
}
内嵌资源 test.ActiveRecord.config 内容:
<?xml version="1.0" encoding="utf-8" ?>
<activerecord>
<config>
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect" />
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="hibernate.connection.connection_string" value="UID=sa;Password=*****;Initial Catalog=test;Data Source=." />
</config>
</activerecord>
<activerecord>
<config>
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect" />
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="hibernate.connection.connection_string" value="UID=sa;Password=*****;Initial Catalog=test;Data Source=." />
</config>
</activerecord>