Wir haben beschlossen, Linq To SQL für unsere Datenschicht in unserem neuesten Projekt zu verwenden. Wir haben eine funktionelle Lösung, die bisher alles gehandhabt hat, was wir mit einem großen Problem angestellt haben. Wir müssen die gleiche Methode immer wieder neu codieren, um nur geringfügig unterschiedliche Ergebnismengen aus unserer Datenbank zu erhalten.Erstellen von Linq nach SQL DRY
Als Beispiel:
public List<TeamBE> GetTeamsBySolutionID(Guid SolutionID)
{
List<TeamBE> teams = new List<TeamBE>();
Esadmin db = new Esadmin(_connectionString);
var qry = (from teamsTable in db.Teams
join solutionsTable in db.Solutions on teamsTable.SolutionID equals solutionsTable.SolutionID
where teamsTable.SolutionID == SolutionID
select new { teamsTable, solutionsTable.SolutionName });
foreach (var result in qry)
{
TeamBE team = new TeamBE();
team.TeamID = result.teamsTable.TeamID;
team.Description = result.teamsTable.Description;
team.Status = result.teamsTable.Status;
team.LastModified = result.teamsTable.LastModified;
team.SolutionID = result.teamsTable.SolutionID;
team.SolutionName = result.SolutionName;
team.Name = result.teamsTable.Name;
team.LocationLevel = result.teamsTable.LocationLevel;
team.AORDriven = result.teamsTable.AoRDriven;
team.CriteriaID = result.teamsTable.CriteriaID ?? Guid.Empty;
teams.Add(team);
}
return teams;
}
public TeamBE GetTeamByID(Guid TeamID)
{
Esadmin db = new Esadmin(_connectionString);
TeamBE team = new TeamBE();
var qry = (from teamsTable in db.Teams
join solutionsTable in db.Solutions on teamsTable.SolutionID equals solutionsTable.SolutionID
where teamsTable.TeamID == TeamID
select new { teamsTable, solutionsTable.SolutionName }).Single();
team.TeamID = qry.teamsTable.TeamID;
team.Description = qry.teamsTable.Description;
team.Status = qry.teamsTable.Status;
team.LastModified = qry.teamsTable.LastModified;
team.SolutionID = qry.teamsTable.SolutionID;
team.SolutionName = qry.SolutionName;
team.Name = qry.teamsTable.Name;
team.LocationLevel = qry.teamsTable.LocationLevel;
team.AORDriven = qry.teamsTable.AoRDriven;
team.CriteriaID = qry.teamsTable.CriteriaID ?? Guid.Empty;
return team;
}
Und weiter und weiter bis zum Überdruss.
Gibt es eine Möglichkeit, Linq-Ergebnisse als Parameter an eine Funktion zu übergeben, damit ich meine Objektzuordnungen in einer Funktion platzieren kann und mich nicht so oft wiederhole?
Genau das möchte ich tun, aber wie erstelle ich diesen expliziten Typ, wenn nichts von SQL Metal erzeugt wird, um ihn zu finden. –
Erstellen Sie einfach eine Klasse mit öffentlichen Eigenschaften für die zwei Teile, die Sie haben. Wenn Sie das Objekt erstellen, verwenden Sie den Standardkonstruktor mit Eigenschaftsinitialisierungen (nehmen Sie die Eigenschaften nicht als Konstruktorparameter, sonst kann der Ausdruck nicht einem IQueryable zugeordnet werden). –
Ich möchte das in Aktion sehen, kennen Sie irgendwelche Ressourcen oder Tutorials zu dieser Art von Dingen? –