2016-06-23 1 views
1

MVCアプリケーションのデータプロバイダとしてAdvantage Databaseサーバーを試してみます。データソースは、Visual FoxProの無料のテーブルです。 invariantName = "Advantage.Data.Provider" タイプ= "Advantage.Data.Provider.AdsProviderServices、EntityFramework.Advantage.v12、バージョン= 12.0:無料dbfテーブルでLINQを使用するAdvantage Database NETプロバイダの設定方法を教えてください。

プロバイダ以下のようにIはDbContext、データプロバイダと簡単なLINQを定義します.0.0、文化=中立」

のconnectionStrings:テストされ、それらの両方 名= "Context1_ads" たconnectionString = "データソース= D:\ PathToData \; ServerTypeに= LOCAL; TABLETYPE = CDX;" "データソース= \\ AdsSrv:6262 \ Data; TableType = CDX;" <プロバイダ名> "Advantage.Data.Provider"

name = "Context2_ads" connectionString = 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(); 

とget: エラー7200:AQEエラー:状態= HY000を。 NativeError = 5041; [SAP] [Advantage SQL Engine] [ASA]エラー5041:要求されたオブジェクトが見つかりませんでした。 dbo-linkオブジェクトは、フリー接続ではサポートされていません。テーブル名:状態AdsCommandクエリの実行に失敗しました。 Genetatedクエリ:アドバンテージプロバイダにDBFするために可能な利用のLINQは

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" 

ですか?

+0

ADSは、スキーマをサポートしていません。 Schemaを ""(空文字列)に設定しようとしましたか? –

+0

はい、私は空のスキーマ[Schema = ""]を試しましたが、System.ComponentModel.DataAnnotationsがエラーを投げました: "引数 'value'は空でもNULLでも空白だけでもかまいません。 –

+0

また、私は注釈なしで試しました[表( "STATE"、Schema = ":: this")] - ADSプロバイダーは同じエラー5041を処理します。 –

答えて

1

DbContextためデフォルトスキーマ追加:あなたが何らかの形でスキーマを省略しないようにリンクを取得する必要がありますので

modelBuilder.HasDefaultSchema(""); 
関連する問題