Vik Kony
Vik Kony

Reputation: 21

How to configure Advantage Database NET provider to use LINQ with free dbf tables?

I try Advantage Database server as data provider for MVC application. Data source is free Visual FoxPro's tables. I define DbContext, data provider and simple LINQ as shown below

provider: invariantName="Advantage.Data.Provider" type="Advantage.Data.Provider.AdsProviderServices, EntityFramework.Advantage.v12, Version=12.0.0.0, Culture=neutral"

connectionStrings: tested both of them name="Context1_ads" connectionString="Data Source=D:\PathToData\; ServerType=LOCAL; TableType=CDX;" providerName="Advantage.Data.Provider"

name="Context2_ads" connectionString="Data Source=\\AdsSrv:6262\Data; TableType=CDX;" providerName="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();

And get: Error 7200: AQE Error: State = HY000; NativeError = 5041; [SAP][Advantage SQL Engine][ASA] Error 5041: The requested object was not found. dbo - link object is not supported on free connection. Table name: State AdsCommand query execution failed. 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"

Is possible use LINQ to dbf with Advantage provider?

Upvotes: 1

Views: 806

Answers (1)

Vik Kony
Vik Kony

Reputation: 21

Add default schema for DbContext:

modelBuilder.HasDefaultSchema("");

Upvotes: 1

Related Questions