Я признаю, что не использовал NHibernate, но вы можете просто добавить два свойства в класс модели для строк xarray и yarray
public string XArray { get { return string.Join(",", this.Vertices.Select(v => v.X.ToString())); } }
public string YArray { get { return string.Join(",", this.Vertices.Select(v => v.Y.ToString())); } }
а потом эти сохранятся?
редактировать:
Хорошо, если я правильно читаю, похоже, что вы хотите создать VerticesType
public class VerticesType : IUserType
{
public object NullSafeGet(IDataReader rs, string[] names, object owner)
{
var retval = new List<Point>();
var xCoords = ((string) NHibernateUtil.String.NullSafeGet(rs, names[0])).Split(",");
var yCoords = ((string) NHibernateUtil.String.NullSafeGet(rs, names[1])).Split(",");
for(i = 0; i < xCoords.Length; i++)
{
retval.Add(new Point(int.Parse(xCoords[i]), int.Parse(yCoords[i])));
}
return retval;
}
public void NullSafeSet(IDbCommand cmd, object value, int index)
{
var list = value as List<Point>;
if( list == null )
{
NHibernateUtil>String.NullSafeSet(cmd, null, index);
NHibernateUtil>String.NullSafeSet(cmd, null, index + 1);
return;
}
NHibernateUtil.String.NullSafeSet(cmd, string.Join(",", list.Select(v => v.X.ToString()), index);
NHibernateUtil.String.NullSafeSet(cmd, string.Join(",", list.Select(v => v.Y.ToString()), index + 1);
}
# rest of IUserType implementation here
}
Очевидно, с дополнительной проверкой ошибок. Надеюсь, это поможет.