Je vois que vous pouvez spécifier insérer, mettre à jour et supprimer des proc stockés, mais pas de manière directe pour SELECT procs stockés.Comment dites-vous aux données dynamiques ASP .Net d'utiliser des procédures stockées pour sélectionner?
Répondre
Ceci est faisable mais pas via l'outil de glisser/déposer visuel. Vous devez faire trois choses:
créer une nouvelle méthode de la classe DataContext qui sera appelée à « obtenir » vos données
public partial class DatabaseDataContext { [Function(Name = "dbo.Contact_Get")] [ResultType(typeof(Contact))] [ResultType(typeof(int))] public IMultipleResults GetContacts([Parameter(Name = "PageIndex", DbType = "Int")] System.Nullable<int> pageIndex, [Parameter(Name = "PageSize", DbType = "Int")] System.Nullable<int> pageSize, [Parameter(Name = "Sort", DbType = "NVarChar(10)")] string sort, [Parameter(Name = "ContactTypeId", DbType = "Int")] System.Nullable<int> contactTypeId) { IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), pageIndex, pageSize, sort, contactTypeId); return ((IMultipleResults)(result.ReturnValue)); }
}
Créer un nouveau modèle de page (List.aspx par exemple) pour la table particulière que vous voulez dans le dossier CustomPages pour contrôler la sélection.
Contrôler le mécanisme de sélection de la grille.
protected void GridDataSource_Selecting(object sender, LinqDataSourceSelectEventArgs e) { DatabaseDataContext db = new DatabaseDataContext(); IMultipleResults results = db.GetContacts(e.Arguments.StartRowIndex, e.Arguments.MaximumRows, e.Arguments.SortExpression, (int?)e.WhereParameters["ContactTypeId"]); e.Result = results.GetResult<Contact>().ToList(); e.Arguments.TotalRowCount = results.GetResult<int>().Single<int>();
}
Vérifiez le échantillon de données dynamique SP sur le site CodePlex pour DD qui vous montre comment faire:
http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=14473
LINQ to SQL est une très mauvaise idée ...
mais cette sproc devrait vous permettre de faire ce que vous voulez
create PROCEDURE [dbo].[usp_GetCompanies] (
@in_filter nvarchar(2000)
)
AS
declare @sql nvarchar(max)
begin
set @sql = '
SELECT
c.id as company_id, c.name as company_name
FROM company c
WHERE id is not null ' + @in_filter + ' order by c.type, c.name '
exec sp_executesql @sql
end
return
Je ne vois pas comment ce que vous proposez peut être une solution. Je veux savoir où je voudrais spécifier les procédures stockées à utiliser pour mes instructions SELECT – Irwin
ok - je suppose que je n'ai pas compris quelle partie vous avez besoin.voir le lien dans la réponse ci-dessus – mson
Je voudrais souligner que juste parce qu'il est possible d'utiliser linq-to-sql, ne signifie pas que vous devriez l'utiliser. linq-to-sql est expressément interdit dans les environnements que je gère. – mson
Qu'est-ce que vous cherchez Je crois ne pas exactement possible, parce que les entités doivent être mappés à une table ou une vue quelconque. Une procédure stockée n'est pas quelque chose que vous pouvez définir une entité contre.
Cependant, il est certainement possible de créer un mappage pour une procédure stockée qui indique à Linq2Sql de renvoyer des entités lors de son exécution et de mettre une méthode dans votre classe DataContext pour exécuter le sproc et obtenir votre liste d'entités. Ces entités fonctionnent de la même manière que les entités créées à partir d'un mappage de table normal; l'appel de SubmitChanges() sur celles-ci utiliserait alors les sprocs Insert/Update/Delete que vous avez créés pour ce type d'entité.
Probablement la meilleure chose à faire serait de regarder this walkthrough by Scott Guthrie.
utilisez-vous LINQ to SQL ou Entity Framework? –
J'utilise LINK to SQL – Irwin
Est-ce que ce doit être un SP, ou peut-il être un View? –