was ist die bevorzugte Praxis, wenn linq2sql mit (in asp.net MVC-Anwendungen):linq2sql: Singleton oder verwenden, Best Practices
partial class db
{
static db _db = new db(global::data.Properties.Settings.Default.nanocrmConnectionString, new AttributeMappingSource());
public static db GetInstance()
{
return _db;
}
}
oder abzurufen neue Instanz, wenn: "Singletons" für DataContext
wie erstellen es benötigt innerhalb using
:
using (db _db = new db())
{
...
}
die Verwendung von using
bringt einige Einschränkungen in den Code. also bevorzuge ich Singleton. ist es eine seltsame Übung?
UPD:
Erklärung, warum ich Singletons bin mit:
public class UserGroupRepository
{
public static IQueryable<Group> RolesFor(string username)
{
User user = UserRepository.WithUsername(username);
return from g in db.GetInstance().Groups
join ug in db.GetInstance().UsersGroups on g.Id equals ug.GroupId
where ug.UserId == user.Id
select g;
}
}
Ich habe diese Methode. aufgrund der Rückgabe IQQueryable - ich kann weiter komponieren Abfrage ohne es auszuführen, so hier nur faule Ergebnis zurück.
wenn ich den gleichen Code mit using
umschreibe - ich kann nicht IQueryable zurückgeben (weil db wird entsorgt und IQueryable wird auch verloren), und ich würde es in Liste ändern. und jetzt wird diese Methode "riesige" Liste zurückgeben, von der ich Daten über die vorherige Funktion filtern werde.
ich hoffe ich beschreibe genug ausführlich.
aus Neugier, welche Einschränkungen macht die Verwendung von "verwenden"? Vielleicht gibt es einen schönen Weg, sie zu umgehen ... – LorenVS
@LorenVS: Ich wette, dass "Einschränkungen" sind, weil ich ein Neuling bin, also glaube ich, dass es auch eine elegante Lösung mit 'using' gibt ;-) – zerkms
Hinzugefügt zu mein Beitrag zu Ihrem Update – LorenVS