Я пытаюсь использовать сервер базы данных 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?
ADS не поддерживает схемы, так что вы должны каким-то образом получить ссылку не пропустить схему. Вы пытались установить схему на "" (пустая строка)? –
Да, я попробовал пустую схему [Schema = ""], но System.ComponentModel.DataAnnotations забросил ошибку: «Значение аргумента« не может быть пустым, быть NULL или содержать только пробелы ». –
Кроме того, я пробовал без аннотации [Таблица («STATE», Schema = «:: this»)] - поставщик ADS трет ту же ошибку 5041. –