public override void VisitBelongsTo(BelongsToModel model)
{
if (currentModel.ActiveRecordAtt != null)
{
if (currentModel.ActiveRecordAtt.Lazy ||
(currentModel.ActiveRecordAtt.LazySpecified == false && ActiveRecordModel.isLazyByDefault))
{
//Assuming that a property must have at least a single accessor
MethodInfo accessor = model.Property.GetAccessors(true)[0];
if (!accessor.IsVirtual)
{
throw new ActiveRecordException(
String.Format("Property {0} must be virtual because " +
"class {1} support lazy loading [ActiveRecord(Lazy=true)]",
model.Property.Name, model.Property.DeclaringType.Name));
}
}
}
if (model.BelongsToAtt.Column == null && model.BelongsToAtt.CompositeKeyColumns == null)
{
model.BelongsToAtt.Column = model.Property.Name;
}
// Append column prefix
if (model.BelongsToAtt.Column != null)
{
model.BelongsToAtt.Column = columnPrefix + model.BelongsToAtt.Column;
}
if (model.BelongsToAtt.Type == null)
{
model.BelongsToAtt.Type = model.Property.PropertyType;
}
}