FAQ for Afo Castle ActiveRecord Model Code Generator Complex Model Support Windows Application

Why does the application expire?

The application expires to minimize support costs around old versions of the application. While the application may expire, the license to the application doesn't expire. The expiration just encourages you to download the latest version every so often. At least a couple of weeks before the application expires a new download (either the same version or an updated version) should be available with an extended expiration date.

What does the generated code look like?

Here's an example of the Employees table from the Northwind database:

namespace Model.Northwind.DataLayer.NHibernateActiveRecord.ActiveRecord
{
    using System;
    using System.Collections.Generic;
    using Castle.ActiveRecord;

    [Serializable, ActiveRecord("dbo.Employees")]
    public partial class Employee : ActiveRecordValidationBase<Employee>
    {
        #region Constructors

        public Employee()
        {
            Employees = new List<Employee>();
        }

        #endregion

        #region Properties

        [PrimaryKey(Column = "EmployeeID")]
        public int EmployeeID { get; private set; }

        [Property(Column = "LastName", NotNull = true, Length = 20)]
        public string LastName { get; set; }

        [Property(Column = "FirstName", NotNull = true, Length = 10)]
        public string FirstName { get; set; }

        [Property(Column = "Title", Length = 30)]
        public string Title { get; set; }

        [Property(Column = "TitleOfCourtesy", Length = 25)]
        public string TitleOfCourtesy { get; set; }

        [Property(Column = "BirthDate")]
        public DateTime? BirthDate { get; set; }

        [Property(Column = "HireDate")]
        public DateTime? HireDate { get; set; }

        [Property(Column = "Address", Length = 60)]
        public string Address { get; set; }

        [Property(Column = "City", Length = 15)]
        public string City { get; set; }

        [Property(Column = "Region", Length = 15)]
        public string Region { get; set; }

        [Property(Column = "PostalCode", Length = 10)]
        public string PostalCode { get; set; }

        [Property(Column = "Country", Length = 15)]
        public string Country { get; set; }

        [Property(Column = "HomePhone", Length = 24)]
        public string HomePhone { get; set; }

        [Property(Column = "Extension", Length = 4)]
        public string Extension { get; set; }

        [Property(Column = "Photo")]
        public byte[] Photo { get; set; }

        [Property(Column = "Notes", ColumnType = "StringClob")]
        public string Notes { get; set; }

        [BelongsTo(Column = "ReportsTo")]
        public Employee ReportsTo { get; set; }

        [Property(Column = "PhotoPath", Length = 255)]
        public string PhotoPath { get; set; }

        #endregion

        #region HasMany Employees

        [HasMany(typeof(Employee), Lazy = true)]
        public IList<Employee> Employees { get; set; }

        #endregion
    }
}

What other features do you have planned?

The feature set should be pretty compelling "as is". While new features may be added, there is no public roadmap for the application. It is more likely that new (and sometimes related) products will be released.

Overtime, the code generator may be enhanced to handle more and more database design edge cases. Feel free to send Agility for ORMs an example database schema if you disagree with how the code is currently being generated.

If you would like to see support added for a specific database vendor (or any other feature), please let us know.

What is your support policy?

Given the low cost and low volume of these solutions, Agility for ORMs cannot make any guarantees regarding support. It's more important to make these solutions available to developers at an affordable price than it is to price the products in such a way that reasonable guaranteed support would be feasible.

That said, Agility for ORMs would love to provide excellent support. Hopefully you will be pleasantly surprised.

Contact Agility for ORMs if you would like to purchase hourly consulting services around these products.