Stò implementando una classe per inserimento dai dati durante l'installazione del database...
Il database e le tabelle vengono create correttamente, ma quando provo ad inserire i dati succede questo:
codice:
public virtual void InstallData(string defaultUserName, string defaultUserPassword)
        {
            Permission permission = _permissionService.AddNewPermission("CanAccessAdminArea", "Può accedere all'area di amministrazione");
            Role role = _roleService.AddNewRole("Supervisor", "Ruolo Supervisor", permission);
            Account account = _accountService.AddNewAccount(defaultUserName, defaultUserPassword, role);
        }
con _permissionService.AddNewPermission viene inserito nel database il nuovo record per la tabella Permission...
con _roleService.AddNewRole viene inserito nel database il nuovo record per la tabella Role... In più viene inserito un nuovo record per la tabella permission (duplicato al precedente ma con id = 2) ...
con _accountService.AddNewAccount viene inserito nel database il nuovo record per la tabella Account... In più viene inserito un nuovo record per la tabella permission (duplicato al precedente ma con id = 3) e un nuovo record per la tabella Role (duplicato al precedente ma con id = 2)

Come posso risolvere??

codice:
public Permission AddNewPermission(string Name, string Description)
        {
            Permission result = new Permission
            {
                Name = Name,
                Description = Description
            };
            _permissionRepository.Insert(result);
            return result;
        }
codice:
public Role AddNewRole(string Name, string Description, Permission permission)
        {
            Role result = new Role
            {
                Name = Name,
                Description = Description,
            };
            result.Permissions.Add(permission);
            _roleRepository.Insert(result);
            return result;
        }
codice:
public Account AddNewAccount(string Username, string Password, Role role)
        {
            Account result = new Account
            {
                Username = Username,
                Password = Password,
                CreatedOn = DateTime.Now,
                Role = role
            };
            _accountRepository.Insert(result);
            return result;
        }
Questo è il codice che viene eseguito durante l'inserimento:
codice:
public virtual void Insert(T entity)
        {
            try
            {
                if (entity == null)
                    throw new ArgumentNullException("entity");


                this.Entities.Add(entity);


                this._context.SaveChanges();
            }
            catch (DbEntityValidationException dbEx)
            {
                var msg = string.Empty;


                foreach (var validationErrors in dbEx.EntityValidationErrors)
                    foreach (var validationError in validationErrors.ValidationErrors)
                        msg += string.Format("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage) + Environment.NewLine;


                var fail = new Exception(msg, dbEx);
                //Debug.WriteLine(fail.Message, fail);
                throw fail;
            }
        }
Grazie in anticipo per l'aiuto...