Effort Framework не распознает схему Entity Model

У меня есть модель объекта базы данных Sybase ASE, и я пытаюсь использовать Effort Framework для создания модульных тестов. для этого. Я могу получить доступ к базе данных с моделью объекта как в моем основном проекте, так и в проекте модульного тестирования, однако при попытке использовать Effort для создания базы данных в памяти я получаю исключение.

Код проблемы в проекте модульного тестирования

public SetUpShims()
{
     string connString = System.Configuration.ConfigurationManager.ConnectionStrings["CoPathDataContext"].ConnectionString;
     MyDbContext context;
     // CreateTransient throws exception
     EntityConnection conn = Effort.EntityConnectionFactory.CreateTransient(connString);

     context = new Data.CoPathDataContext(conn);

}

Сведения об исключении: (System.Data.MetadataException)

Schema specified is not valid. Errors: 
(0,0) : error 0063: Precision facet isn't allowed for properties of type double.
(0,0) : error 0063: Precision facet isn't allowed for properties of type double.
(0,0) : error 0063: Precision facet isn't allowed for properties of type double.
(0,0) : error 0063: Precision facet isn't allowed for properties of type double.
(0,0) : error 0063: Precision facet isn't allowed for properties of type double.
(0,0) : error 0063: Precision facet isn't allowed for properties of type double.
(0,0) : error 0063: Precision facet isn't allowed for properties of type double.
(0,0) : error 0063: Precision facet isn't allowed for properties of type double.
(0,0) : error 0063: Precision facet isn't allowed for properties of type double.
(0,0) : error 0063: Precision facet isn't allowed for properties of type double.
(0,0) : error 0063: Precision facet isn't allowed for properties of type double.

Трассировки стека

at System.Data.Metadata.Edm.StoreItemCollection.Loader.ThrowOnNonWarningErrors()  
at System.Data.Metadata.Edm.StoreItemCollection.Loader.LoadItems(IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths) 
at System.Data.Metadata.Edm.StoreItemCollection.Loader..ctor(IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths, Boolean throwOnError)  
at System.Data.Metadata.Edm.StoreItemCollection.Init(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths, Boolean throwOnError, DbProviderManifest& providerManifest, DbProviderFactory& providerFactory, String& providerManifestToken, Memoizer`2& cachedCTypeFunction)
at System.Data.Metadata.Edm.StoreItemCollection..ctor(IEnumerable`1 xmlReaders)   
at Effort.Internal.Common.MetadataWorkspaceHelper.CreateMetadataWorkspace(List`1 csdl, List`1 ssdl, List`1 msl)   
at Effort.Internal.Common.MetadataWorkspaceHelper.Rewrite(String metadata, String providerInvariantName, String providerManifestToken) 
at Effort.EntityConnectionFactory.<GetEffortCompatibleMetadataWorkspace>b__1(String metadata)
at Effort.Internal.Caching.MetadataWorkspaceStore.<>c__DisplayClass1.<GetMetadataWorkspace>b__0()
at System.Lazy`1.CreateValue()   
at System.Lazy`1.LazyInitValue()
at System.Lazy`1.get_Value()
at Effort.Internal.Caching.ConcurrentCache`2.Get(TKey key, Func`1 factory)  
at Effort.Internal.Caching.MetadataWorkspaceStore.GetMetadataWorkspace(String metadata, Func 2 workspaceFactoryMethod)
at Effort.EntityConnectionFactory.GetEffortCompatibleMetadataWorkspace(String& entityConnectionString)
at Effort.EntityConnectionFactory.CreateTransient(String entityConnectionString, IDataLoader dataLoader)
at Effort.EntityConnectionFactory.CreateTransient(String entityConnectionString)   

После просмотра файлов .csdl и .ssdl, созданных Entity, я считаю, что нашел поля, вызывающие проблему.

SSDL

<Property Name="sequence_num" Type="float" Precision="24" Nullable="false" />

CSDL

<Property Name="sequence_num" Type="Double" Nullable="false" />

Я попытался удалить атрибут Precision из полей SSDL, но все равно получил ту же ошибку. (Даже если это сработает, изменения, вероятно, не сохранятся при регенерации модели)

Кто-нибудь думает о том, что вызывает исключение и как я должен его разрешить?


person elliot-j    schedule 08.10.2014    source источник
comment
Есть новости по этому поводу?   -  person MiloTheGreat    schedule 14.08.2017
comment
@MiloTheGreat, к сожалению, нет, единственное решение, которое мы нашли, — отредактировать EDMX, чтобы удалить столбец, вызывающий проблему, и использовать хранимые процедуры для доступа к таблице, когда нам нужен столбец.   -  person elliot-j    schedule 16.08.2017
comment
@MiloTheGreat Я открыл для этого выпуск на GitHub, за которым вы можете следить здесь   -  person elliot-j    schedule 16.08.2017


Ответы (1)


если вы еще не сделали этого, обновите сервер MySQL до 5.6+, это было добавлено, затем обновите все ваши дату, дату и время ...... с опцией 0-6 в ()

person Simon 5968    schedule 24.03.2015
comment
Проблема возникает в базе данных Sybase ASE, а не в MySQL. - person elliot-j; 25.03.2015