2016-06-23 1 views
1

Я пытаюсь использовать сервер базы данных Advantage в качестве поставщика данных для приложения MVC. Источник данных - это бесплатные таблицы Visual FoxPro. Я определяю DbContext, поставщика данных и простой LINQ, как показано нижеКак настроить поставщика Advantage Database NET для использования LINQ со свободными таблицами dbf?

поставщика: invariantName = типа "Advantage.Data.Provider" = "Advantage.Data.Provider.AdsProviderServices, EntityFramework.Advantage.v12, Version = 12,0 .0.0, культура = нейтральной»

ConnectionStrings: тестирование обоих из них Name = "Context1_ads" ConnectionString = "Источник данных = D: \ PathToData \; ServerType = LOCAL; TABLETYPE = CDX;" providerName = "Advantage.Data.Provider"

name = "Context2_ads" connectionString = "Источник данных = \\ 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(); 

И получите: Ошибка 7200: AQE Ошибка: State = HY000; NativeError = 5041; [SAP] [Advantage SQL Engine] [ASA] Ошибка 5041: запрошенный объект не найден. Объект dbo - link не поддерживается в свободном соединении. Имя таблицы: Ошибка выполнения запроса AdsCommand штата. Genetated запрос:

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" 

Есть возможность использовать LINQ для DBF с поставщиком Advantage?

+0

ADS не поддерживает схемы, так что вы должны каким-то образом получить ссылку не пропустить схему. Вы пытались установить схему на "" (пустая строка)? –

+0

Да, я попробовал пустую схему [Schema = ""], но System.ComponentModel.DataAnnotations забросил ошибку: «Значение аргумента« не может быть пустым, быть NULL или содержать только пробелы ». –

+0

Кроме того, я пробовал без аннотации [Таблица («STATE», Schema = «:: this»)] - поставщик ADS трет ту же ошибку 5041. –

ответ

1

Добавить по умолчанию схемы для DbContext:

modelBuilder.HasDefaultSchema(""); 
Смежные вопросы