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...