2009-03-28 11 views
3

In meinem Projekt sind viele Tabellen mit der ASPNET_Application-Tabelle von ApplicationId Fremdschlüssel verknüpft. Ich möchte nicht, dass die Benutzer sie anzeigen oder bearbeiten, also suche ich nach einer Möglichkeit, diesen SQL-Tabellenfeldwert vorzugeben, bevor die Einfügeabfrage ausgeführt wird. Ich habe noch ein Gerüst für diese Spalte aktiviert (damit DD das richtige sql-Skript generiert), aber ich verstecke diese Spalte/Feld in all meinen Edit/List/Insert-Seiten.Setzen Sie Service-Feld Wert in dynamischen Daten

Idealerweise suche ich nach einer Stelle, an der ich meinen Code injizieren kann, bevor DynamicInsert für eine beliebige Tabelle in meiner LinqToSql-Klasse ausgeführt wird.

Dank

Antwort

2

So, nachdem einige Graben um kam ich mit einer akzeptablen Lösung auf. Ich habe eine partielle Klasse für meinen Datenkontext erstellt und eine partielle Insert_-Methode für jede Tabelle hinzugefügt, die mit der aspnet_Applications verknüpft ist. In jeder Methode setze ich das Feld ApplicationId auf die aktuelle Anwendungs-ID.

Es sieht wie folgt aus:

public partial class MyDataContext 
{ 
    partial void InsertMyTable(MyTable instance) 
    { 
     instance.ApplicationId = HttpContext.Current.Session["ApplicationId"] as Guid?; 
    this.ExecuteDynamicInsert(instance); 
    } 
} 

Beachten Sie, dass Sie nicht andere LINQ-Anweisungen, während in dieser Methode ausführen kann. Insbesondere musste ich die Anwendungs-ID in Sitzung speichern, anstatt die Tabelle aspnet_Applications abzufragen.

Dies ist zwar akzeptable Lösung es nicht perfekt ist (viele sich wiederholende Code) so, wenn jemand besser weiß, hier einen Knochen werfen mich :)

0

in Zukunft die beste Lösung wäre, Domainservice Teil zu verwenden, der Vorschau RIA Services Net nur bei MIX09 veröffentlicht dort Videos hier sehen:

.NET RIA Services - Building Data-Driven Applications with Microsoft Silverlight and Microsoft ASP.NET

Microsoft ASP.NET 4.0 Data Access: Patterns for Success with Web Forms

Die erste ein INTROL ist RIA .net Dienste aus der Sicht von Silverlight, aber mehr davon auf DD angewendet die zweite ist David Ebbo Präsentation bei MIX und zeigt, wie DomainService mit DD funktioniert Ich denke, das ist der Weg nach vorne, wie Sie alle Ihre Geschäftslogik hier im DomainService tun können.

Verwandte Themen