Ich möchte Linq zu SQL in meiner Windows-Formularanwendung verwenden.Extrahieren von generischen Linq-Abfragen
Die Daten in der lokalen Datenbank werden vom Web-Service abgerufen oder lokal erstellt.
Wenn ein Unternehmen geholt wurde aus dem Web Service es ExternalId
eingerichtet hatIch muss häufig Code verwenden, wie unten Objekte durch ihre ExternalId zu holen:
var user = (from u in db.User
where u.ExternalId == userExternalId
select u).First();
var location = (from l in db.Location
where l.ExternalId == locationExternalId
select l).First();
So habe ich aber über Ändern es auf eine generische Funktion wie die folgende Liste:
internal TEntity FetchByExternalId<TEntity>(System.Data.Linq.Table<TEntity> table,
int externalId)
where TEntity: IExternalStorable
{
return (from obj in table
where obj.ExternalId == externalId
select (TEntity)obj).First();
}
Leider sind solche Funktion nicht kompiliert:
- Ich kann nicht IExternalStorable zu Entity-Klasse hinzufügen, wie der Code aus der Datenbank generiert wird (I obwohl ich über partielle Klassen verwenden, aber es nicht zu funktionieren scheint)
- Es C# beklagt, dass TEntity isn‘ t Referenztyp Ich bin mir nicht sicher, wie das generische "where" constrain aussehen sollte.
Irgendwelche Ideen, wie man linq in generischen Funktionen benutzt?
Re: 1. Es war ein Problem mit dem Namespace :) Danke. –
Problem gelöst. Vielen Dank! –