Проблема была в том, что вместе с вашими пакетами загружалась текущая версия EntityFramework(5.0). А в ней, они, видимо, перенесли атрибут DatabaseGenerated(и не только его) в System.ComponentModel.DataAnnotations.Schema. В вашем же провайдере используется более ранняя версия EF.
После того, как я сделал необходимые изменения(заменил версию EF и в LocalizedObject добавил соответствующий namespace) и пересобрал решение — всё заработало.
Надеюсь, вы обратите на это внимание.
System.Data.Entity.ModelConfiguration.ModelValidationException не обработано пользовательским кодом
HResult=-2146233088
Message=Во время создания модели обнаружены ошибки проверки:
\tSystem.Data.Entity.Edm.EdmEntityType:: Для EntityType «LocalizedObject» не определены ключи. Определите ключ для этого EntityType.
\tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: Набор EntitySet «Objects» основан на типе «LocalizedObject», в котором не определены ключи.
Source=EntityFramework
StackTrace:
в System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.ValidateAndSerializeCsdl(EdmModel model, XmlWriter writer)
в System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.ValidateCsdl(EdmModel model)
в System.Data.Entity.DbModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo)
в System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
в System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
в System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
в System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
в System.Data.Entity.Internal.InternalContext.Initialize()
в System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
в System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
в System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
в System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()
в System.Linq.Queryable.Where[TSource](IQueryable`1 source, Expression`1 predicate)
в Knoema.Localization.EFProvider.LocalizationRepository.Knoema.Localization.ILocalizationRepository.GetAll(CultureInfo culture)
в Knoema.Localization.LocalizationManager.GetAll(CultureInfo culture)
в Knoema.Localization.LocalizationManager.GetLocalizedObject(CultureInfo culture, String hash)
в Knoema.Localization.LocalizationManager.Translate(String scope, String text)
в Knoema.Localization.StringExtensions.Resource(String value, Type type)
в Knoema.Localization.StringExtensions.Resource(String value, Object obj)
в KnoemaCustom.Controllers.HomeController.Index() в D:\Тестовые проекты\KnoemaCustom\KnoemaCustom\Controllers\HomeController.cs: строка 14
в lambda_method(Closure, ControllerBase, Object[] )
в System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
в System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass42.b__41()
в System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.b__7(IAsyncResult _)
в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
в System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.b__33()
в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.b__49()
InnerException:
Скажите, при использовании вашего провайдера для Entity Framework необходимо настраивать структуру бд или ещё что-то? Просто при той настройке, которая описана в статье(да и при той, которая в проекте sample в репозитории) проект сваливается с ошибкой
Разработка кастомного движка страниц(бд, веб-сервисы и т.д.) для Microsoft Dynamics CRM 4.
Разработка-дописывание OpenX 2.8.
Загрузчики изображений(Javascript+Acitonscript3+Silverlight). Эта тема раскрыта в моих статьях.
По поводу первого. Просто строку не указал, потому что люблю видеть какой тип у id в модели: здесь может быть как string так и ObjectId. MongoDB позволяет это делать.
Насчет второго. Да, можно Where, наверно и лучше, просто частенько приходится использовать ElemMatch или lt. А это уже совсем непривычно. Пусть уж лучше будет в стиле MongoDB для всего
Почему-то читая такие статьи, хочется не смотреть в чужой карман, а идти своим путем. Категоричность тоже вызывает отторжение.
Про .Net в хабах тут уже писали…
Да я согласен, хорошая, жизнеутверждающая статья. Подходит под дух любого сообщества. Наверное, я просто выдумываю, но череда таких вот простых хороших и жизнеутверждающих статей(серьезно говорю) может подтолкнуть некоторых безответственных личностей начать клепать похожие(только вот абсолютно неискренние, в угоду моде). Очень бы этого не хотелось.
После того, как я сделал необходимые изменения(заменил версию EF и в LocalizedObject добавил соответствующий namespace) и пересобрал решение — всё заработало.
Надеюсь, вы обратите на это внимание.
HResult=-2146233088
Message=Во время создания модели обнаружены ошибки проверки:
\tSystem.Data.Entity.Edm.EdmEntityType:: Для EntityType «LocalizedObject» не определены ключи. Определите ключ для этого EntityType.
\tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: Набор EntitySet «Objects» основан на типе «LocalizedObject», в котором не определены ключи.
Source=EntityFramework
StackTrace:
в System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.ValidateAndSerializeCsdl(EdmModel model, XmlWriter writer)
в System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.ValidateCsdl(EdmModel model)
в System.Data.Entity.DbModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo)
в System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
в System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
в System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
в System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
в System.Data.Entity.Internal.InternalContext.Initialize()
в System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
в System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
в System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
в System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()
в System.Linq.Queryable.Where[TSource](IQueryable`1 source, Expression`1 predicate)
в Knoema.Localization.EFProvider.LocalizationRepository.Knoema.Localization.ILocalizationRepository.GetAll(CultureInfo culture)
в Knoema.Localization.LocalizationManager.GetAll(CultureInfo culture)
в Knoema.Localization.LocalizationManager.GetLocalizedObject(CultureInfo culture, String hash)
в Knoema.Localization.LocalizationManager.Translate(String scope, String text)
в Knoema.Localization.StringExtensions.Resource(String value, Type type)
в Knoema.Localization.StringExtensions.Resource(String value, Object obj)
в KnoemaCustom.Controllers.HomeController.Index() в D:\Тестовые проекты\KnoemaCustom\KnoemaCustom\Controllers\HomeController.cs: строка 14
в lambda_method(Closure, ControllerBase, Object[] )
в System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
в System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass42.b__41()
в System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.b__7(IAsyncResult _)
в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
в System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.b__33()
в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.b__49()
InnerException:
Например, код в коде действия:
Разработка-дописывание OpenX 2.8.
Загрузчики изображений(Javascript+Acitonscript3+Silverlight). Эта тема раскрыта в моих статьях.
Насчет второго. Да, можно Where, наверно и лучше, просто частенько приходится использовать ElemMatch или lt. А это уже совсем непривычно. Пусть уж лучше будет в стиле MongoDB для всего
Про .Net в хабах тут уже писали…