2016-06-23 13 views
1

Ich versuche Advantage Database Server als Datenanbieter für MVC-Anwendung. Datenquelle ist freie Visual FoxPro-Tabellen. I definieren DbContext, Datenprovider und einfache LINQ wie untenWie konfiguriert man Advantage Database NET-Provider für die Verwendung von LINQ mit freien DBF-Tabellen?

Anbieter gezeigt: Invariantname = "Advantage.Data.Provider" type = "Advantage.Data.Provider.AdsProviderServices, EntityFramework.Advantage.v12, Version = 12.0 .0.0, Culture = neutral: Context1_ads "connection~~POS=TRUNC = "Data Source = D“

connection beide name = getestet":; Servertype = LOCAL; Table = CDX; \ PathToData \" providerName = "Advantage.Data.Provider"

name = "Context2_ads" connectionString = "Datenquelle = \\ AdsSrv: 6262 \ Data; TableType = CDX;" provider = "Advantage.Data.Provider"

[Table("STATE", Schema = "::this")] // is this needed? 
public class State 
{ 
    public string Guid { get; set; } 
    public string Pseudonim { get; set; } 
    public string Statename { get; set; } 
    //... 
} 
//Mapping 
public class StateMap : EntityTypeConfiguration<State> 
{ 
public StateMap() 
{ 
    this.ToTable("State"); 
    this.HasKey(t => t.Guid); 
    //... 
} 
} 
// Query 
ctx.States.Where(t => t.Pseudonim=="Nim").SingleOrDefault(); 

Und erhalten: Fehler 7200: AQE Fehler: State = HY000; NativeError = 5041; [SAP] [Advantage SQL Engine] [ASA] Fehler 5041: Das angeforderte Objekt wurde nicht gefunden. dbo - link object wird bei freier Verbindung nicht unterstützt. Tabellenname: Die Ausführung der State AdsCommand-Abfrage ist fehlgeschlagen. Genetated query:

SELECT 
"Limit1"."Guid" AS "Guid" 
FROM (SELECT TOP 2 
    "Extent1"."Guid" AS "Guid" 
    FROM "dbo"."State" "Extent1" 
    WHERE (("Extent1"."Pseudonim" = :p__linq__0) OR (("Extent1"."Pseudonim" IS NULL) AND (:p__linq__0 IS NULL))) 
) "Limit1" 

besteht die Möglichkeit, LINQ mit Vorteil Anbieter DBF?

+0

ADS Schema nicht unterstützt, so dass Sie irgendwie Link zu bekommen, um nicht ein Schema weglassen. Haben Sie versucht, Schema auf "" (leere Zeichenfolge) zu setzen? –

+0

Ja, ich habe versucht, leere Schema [Schema = ""], sondern System.ComponentModel.DataAnnotations warf Fehler: "Das Argument 'Wert' kann nicht leer sein, NULL oder enthält nur Leerzeichen." –

+0

Auch habe ich versucht, ohne Anmerkung [Tabelle ("STATE", Schema = ":: this")] - ADS Provider trew den gleichen Fehler 5041. –

Antwort

1

Standard Schema für DbContext hinzufügen:

modelBuilder.HasDefaultSchema("");