J'écris une application basée sur le framework Pro Asp .Net MVC de Steve Sanderson, qui utilise une modélisation de données comme décrit dans l'application Sports Store de ce livre. Mon application fonctionne bien, j'utilise le projet Castle comme CIO mais j'ai deux bases de données. Le premier stocke beaucoup de types de données et de l'information de mes clients. Le second stocke uniquement les données médicales de chaque client. Je dois créer une classe qui renvoie les données dans le tableau des clients, situé sur la base de données 1 et des informations médicales de chaque client stockées sur la base de données 2.MVC Multiple Databases dans un seul modèle de domaine
Voici mon code:
Mes connectionStrings sur web.config:
<add name="CNRConnectionString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=CNR;Persist Security Info=True;User ID=sa;[email protected]#@@@!" providerName="System.Data.SqlClient"/>
<add name="CNRpeConnectionString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=pe;Persist Security Info=True;User ID=sa;[email protected]#@@@!" providerName="System.Data.SqlClient"/>
ma nouvelle classe (juste des données, aucune table conection):
namespace DomainModel.Entities
{
public class ImprimePeriodoPaciente
{
public int CodConsulta { get; set; }
public DateTime DataConsulta { get; set; }
public string Evolucao { get; set; }
public int CodProfissional1 { get; set; }
public int CodPaciente1 { get; set; }
public string NomeProfissional { get; set; } //receives data from other db
public string NomePaciente { get; set; } //receives data from other db
public int CodProcedimento { get; set; }
public bool TagConsulta { get; set; }
public int? TagConsulta2 { get; set; }
public DateTime di { get; set; }
public DateTime df { get; set; }
}
}
Ceci est mon béton et de l'interface de domainmodel:
public class SqlConsultasRepository:IConsultasRepository
{
private Table<Consulta> consultasTabela;
private Table<TEvolucao> tEvolucaoTabela;
private Table<Paciente> pacientesTabela;
private Table<Funcionario> funcionariosTabela;
public SqlConsultasRepository(string connectionString)
{
consultasTabela = (new DataContext(connectionString)).GetTable<Consulta>();
tEvolucaoTabela = (new DataContext(connectionString)).GetTable<TEvolucao>();
pacientesTabela = (new DataContext(connectionString)).GetTable<Paciente>();
funcionariosTabela = (new DataContext(connectionString)).GetTable<Funcionario>();
}
public IQueryable<ImprimePeriodoPaciente> Prontuarios {
get
{
return
(
from c in consultasTabela
join p in pacientesTabela on c.CodPaciente1 equals p.CodigoPaciente //my doom
join f in funcionariosTabela on c.CodProfissional1 equals f.CodigoFuncionario //my doom
select new ImprimePeriodoPaciente
{
CodConsulta=c.CodConsulta,
DataConsulta=c.DataConsulta,
Evolucao=c.Evolucao,
NomeProfissional= f.NomeFuncionario, //my doom
NomePaciente=p.NomePaciente, //my doom
CodProfissional1=c.CodProfissional1,
CodPaciente1 = c.CodPaciente1
}
);
}
}
Le code est marqué par mon malheur »pour montrer où le problème se produit .... Je dois créer une référence connectionString à l'autre base de données car ces tables ne sont pas dans la base de données actuelle spécifiée par la variable connectionString. Je reçois une erreur disant que les données ne proviennent pas du même datacontext (ou quelque chose comme ça).
Alors, pourriez-vous m'aider?
J'ai lu Pro Asp.Net MVC 3 et je recommande de détourner l'exemple de l'application Sports Store. C'est le code le plus fou, pathologiquement exagéré et irréaliste que j'ai jamais vu dans ma vie. Steve Sanderson écrit des cadres et des livres, mais ce ne sont pas des applications de la vie réelle et quand tous les exemples ne collent pas, ce n'est pas une grosse affaire. –
Eh bien, je sais que son mode de vie semble dur, mais je ne pense pas que je n'ai pas le temps de reingeneer mon application, parce que je n'ai pas cette fois ... Tnx pour vos conseils .... les prochaines applications won' t obtenir de cette façon. – Bodyslicer