ho due modelli:
codice:
    [Table("Account")]
    public class dbAccount
    {
        [Key]
        public int AccountID { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
        public string Email { get; set; }
        public string Name { get; set; }
        public string Surname { get; set; }
        public bool IsEnabled { get; set; }
        public virtual ICollection<dbRole> Roles { get; set; }
    }

    [ResourceDisplayName("Account")]
    public class vmAccount
    {
        [Key]
        [ResourceDisplayName("Account.AccountID")]
        public int AccountID { get; set; }

        [ResourceRequired]
        [ResourceDisplayName("Account.UserName")]
        public string UserName { get; set; }

        [ResourceRequired]
        [DataType(DataType.Password)]
        [ResourceDisplayName("Account.Password")]
        public string Password { get; set; }

        [ResourceRequired]
        [ResourceEmail]
        [ResourceDisplayName("Account.Email")]
        public string Email { get; set; }

        [ResourceRequired]
        [ResourceDisplayName("Account.Name")]
        public string Name { get; set; }

        [ResourceDisplayName("Account.Surname")]
        public string Surname { get; set; }

        [ResourceDisplayName("Account.IsEnabled")]
        public bool IsEnabled { get; set; }

        [ResourceDisplayName("Roles")]
        public virtual ICollection<vmRole> Roles { get; set; }
    }
e
codice:
    [Table("Role")]
    public class dbRole
    {
        [Key]
        public int RoleID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public virtual ICollection<dbAccount> Accounts { get; set; }
        public virtual ICollection<dbPermission> Permissions { get; set; }
    }

    [ResourceDisplayName("Role")]
    public class vmRole
    {
        [Key]
        [ResourceDisplayName("Role.RoleID")]
        public int RoleID { get; set; }

        [ResourceDisplayName("Role.Name")]
        public string Name { get; set; }

        [ResourceDisplayName("Role.Description")]
        public string Description { get; set; }

        [ResourceDisplayName("Accounts")]
        public virtual ICollection<vmAccount> Accounts { get; set; }
    }
il problema esce quando devo fare un a conversione da dbAccount a vmAccount con il seguente metodo:

codice:
        public static List<vmAccount> to_vmAccounts(IEnumerable<dbAccount> dbAccounts)
        {
            List<vmAccount> vmAccounts = new List<vmAccount>();
            foreach (dbAccount dbAccount in dbAccounts)
                vmAccounts.Add(to_vmAccount(dbAccount));
            return vmAccounts;
        }
        public static vmAccount to_vmAccount(dbAccount dbAccount)
        {
            vmAccount vmAccount = new vmAccount()
            {
                AccountID = dbAccount.AccountID,
                UserName = dbAccount.UserName,
                Password = dbAccount.Password,
                Email = dbAccount.Email,
                Name = dbAccount.Name,
                Surname = dbAccount.Surname,
                IsEnabled = dbAccount.IsEnabled,
                Roles = RoleService.to_vmRoles(dbAccount.Roles)
            };
            return vmAccount;
        }

        public static List<vmRole> to_vmRoles(IEnumerable<dbRole> dbRoles)
        {
            List<vmRole> vmRoles = new List<vmRole>();
            foreach (dbRole dbRole in dbRoles)
                vmRoles.Add(to_vmRole(dbRole));
            return vmRoles;
        }
        public static vmRole to_vmRole(dbRole dbRole)
        {
            vmRole vmRole = new vmRole()
            {
                RoleID = dbRole.RoleID,
                Name = dbRole.Name,
                Description = dbRole.Description,
                Accounts = AccountServices.tovmAccounts(dbRole.Accounts)
            };
            return vmRole;
        }
L'applicazione va in OVerflow ...

Qualche soluzione???