La Couche De Données Résumé De L'Usine
Je suis nouveau sur le développement d'un Résumé modèle de Fabrique, et souhaitez créer un résumé de l'usine dans la couche de données qui va m'aider à établir un lien de ce calque à d'autres bases de données par exemple, sql et oracle. Pouvez-vous m'aider sur le développement de cette tâche, s'il vous plaît. Notez que la chaîne de connexion de la base de données se trouvent dans cette couche n'est pas dans la présentation..
Grâce
ÉDITÉ
public abstract class Database
{
public string connectionString;
#region Abstract Functions
public abstract IDbConnection CreateConnection();
public abstract IDbCommand CreateCommand();
public abstract IDbConnection CreateOpenConnection();
public abstract IDbCommand CreateCommand(string commandText, IDbConnection connection);
public abstract IDbCommand CreateStoredProcCommand(string procName, IDbConnection connection);
public abstract IDataParameter CreateParameter(string parameterName, object parameterValue);
#endregion
}
public class SQLDatabase : Database
{
public override IDbConnection CreateConnection()
{
return new SqlConnection(connectionString);
}
public override IDbCommand CreateCommand()
{
return new SqlCommand();
}
public override IDbConnection CreateOpenConnection()
{
SqlConnection connection = (SqlConnection)CreateConnection();
connection.Open();
return connection;
}
public override IDbCommand CreateCommand(string commandText, IDbConnection connection)
{
SqlCommand command = (SqlCommand)CreateCommand();
command.CommandText = commandText;
command.Connection = (SqlConnection)connection;
command.CommandType = CommandType.Text;
return command;
}
public override IDbCommand CreateStoredProcCommand(string procName, IDbConnection connection)
{
SqlCommand command = (SqlCommand)CreateCommand();
command.CommandText = procName;
command.Connection = (SqlConnection)connection;
command.CommandType = CommandType.StoredProcedure;
return command;
}
public override IDataParameter CreateParameter(string parameterName, object parameterValue)
{
return new SqlParameter(parameterName, parameterValue);
}
}
Ce sont les deux classes que j'ai créé..
Veuillez nous fournir quelle que soit la conception de l'effort que vous avez fait jusqu'à présent. Nous n'allons pas simplement de vous donner les UML solution.
Veuillez trouver les édité postes avec les classes que j'ai créé
Merci mais en ce qui concerne votre UML? Avez-vous fait de la chair de la conception et de la façon dont l'abrégé de l'usine modèle sera utilisé dans votre solution AVANT de vous commencé à écrire du code?
Je n'ai jamais utilisé résumé d'usine et je ne sais pas comment faire pour la conception de ce... Bon je sais que je suis en utilisant seulement les classes que j'ai posté. Je suis de la chaîne de connexion de la .fichier de réglages et de l'utiliser dans le SQLDatabase. Donc, non, je n'ai pas de UML de l'abrégé de l'usine
Je pense que vous avez manqué mon point de vue, qui est que vous devriez vous concentrer sur la conception de votre solution (par exemple: création d'un haut niveau de diagramme de classe UML, et/ou de faible niveau d'activité ou des diagrammes de séquence) AVANT de vous écrire du code. En général, lorsque l'on essaie de mettre en œuvre tout modèle de conception de l'écriture de code devrait être la version finale (et à titre d'hypothèse la plus simple).
Veuillez trouver les édité postes avec les classes que j'ai créé
Merci mais en ce qui concerne votre UML? Avez-vous fait de la chair de la conception et de la façon dont l'abrégé de l'usine modèle sera utilisé dans votre solution AVANT de vous commencé à écrire du code?
Je n'ai jamais utilisé résumé d'usine et je ne sais pas comment faire pour la conception de ce... Bon je sais que je suis en utilisant seulement les classes que j'ai posté. Je suis de la chaîne de connexion de la .fichier de réglages et de l'utiliser dans le SQLDatabase. Donc, non, je n'ai pas de UML de l'abrégé de l'usine
Je pense que vous avez manqué mon point de vue, qui est que vous devriez vous concentrer sur la conception de votre solution (par exemple: création d'un haut niveau de diagramme de classe UML, et/ou de faible niveau d'activité ou des diagrammes de séquence) AVANT de vous écrire du code. En général, lorsque l'on essaie de mettre en œuvre tout modèle de conception de l'écriture de code devrait être la version finale (et à titre d'hypothèse la plus simple).
OriginalL'auteur Mark | 2011-05-05
Vous devez vous connecter pour publier un commentaire.
La fonctionnalité existe déjà.
Ajouter une chaîne de connexion à l'application/webb.config:
Construire la connexion à l'aide d'une usine:
Obtenir une connexion:
Obtenir une commande:
La seule chose que vous devez faire est de basculer le pilote dans le dossier app/web.config. Pas d'autres changements sont nécessaires.
Mise à jour
Pourquoi construire quelque chose qui existe déjà et sont très facile à utiliser?
a obtenu un budget à dépenser, ehh?
C'était mon hypothèse puisque vous refuser/ne pouvez pas utiliser quelque chose qui existe déjà dans le cadre.
est l'erreur
Syntax error, try again?
OriginalL'auteur jgauffin
Une grande partie de la fonctionnalité requise peut être obtenue à partir de
où vous pouvez obtenir des éléments de
System.Data.Common.DbProviderFactory
qui sont mis en œuvre par la plupart des dotnet-databaseproviders.Mise à jour:
havig votre propre usine est très bien. si vous êtes lookig pour des exemples de travail de la base de données des usines de voir le code source de
Pourquoi construire quelque chose qui existe déjà et sont très facile à utiliser?
cause qui est ma tâche... ma tâche est de créer un résumé de l'usine de ne pas utiliser ce qui est prêt
ce sont des programmes... je ne veux pas de programmes lool...
à droite, ce sont open source propragrams qui ont mis en œuvre leur propre couche d'abstraction de base. vous pouvez regarder le code source de la façon dont ils ont mis en œuvre databstraction.
OriginalL'auteur k3b
Je n'aurais pas "createcommand" ou "createconnection".
Une bien meilleure approche à prendre, c'est de laisser chacune des méthodes d'accès (comme "GetAccounts") gèrent leur propre connexion /commande de l'instanciation.
De raccordement et de Commande des objets de mettre en œuvre IDisposable. En tant que tel, il est préférable d'avoir l'aide d'énoncés dans lesquels ceux-ci sont créées et stockées en tant que de besoin. Teh façon, vous l'avez maintenant pourrait conduire à des problèmes de mémoire.
Plus de la méthode CreateParameter semble pas l'avantage réel plus juste d'appeler "new SqlParameter" dans le code qui a besoin de créer ces paramètres.
Je ferais le suivant:
De cette façon, votre datalayer est spécifique à la fonctionnalité que vous fournissez. Il y a déjà de grands emballages pour le db d'accès comme Bibliothèque d'Entreprise. L'approche que vous prenez n'ajoute rien et introduit des erreurs.
Plus, cette approche signifie que vous pouvez mettre en œuvre non fournisseurs de bases de données comme XML, web services, etc avec zéro modifications de code.
En fait, il est. Une Usine a pour but de créer un objet. Le ci-dessus ne fonctionne tout simplement de façon à ce que peut traverser n'importe quel type de magasin de données. La partie abstraite est l'interface qui définit ce que les usines sont en train de faire.
Ce que je veux, c'est créer quelque chose comme ceci primaryobjects.com/CMS/Article81.aspx
Le design est horrible car il appelle à la création de méthodes de raccordement de retour et les objets de commande. Ce n'est pas thread-safe, et il va certainement conduire à de mauvaises pratiques de codage et les problèmes de perte de mémoire. La conception qui a été mis dans ma réponse: se concentrer sur la fonctionnalité requise par la couche de base de données qui est de retour, de stocker et d'exploiter utilisable objets (fleurs, comptes, etc). (Ce qui est la définition d'une usine..) Même l'article mentionné utilise ADO.Net qui vous pouvez certainement le faire.
OriginalL'auteur NotMe
Salut les Gens, je sais que c'est vieux post, mais je voudrais partager quelque chose avec vous.
De la Bibliothèque d'Entreprise et OleDb a un problème, lorsque vous souhaitez insérer une image plus grande que 32k il va jeter l'Exception, afin de résoudre ce que j'ai fait:
Créer un projet Qui vous pouvez appeler
CustomProvider
Créer une Classe Qui vous permettra d'appel de la Base de données
OracleDatabase.cs
Créer une Troisième classe
SQLDatabase.cs
public class SQLDatabase : Base de données
{
puis sur le programme
Vous devez Remplacer toutes les méthode définie dans la Classe de Maître
Créer un
Factory.cs
OriginalL'auteur Leonel