Получение следующей ошибки:
Указанная недопустимая схема.Ошибки:
Типы в сборке 'x, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null' не могут быть загружены, поскольку сборка содержит атрибут EdmSchemaAttribute, и закрытие типов выполняетсязагружен по имени.Загрузка по имени и атрибуту не допускается.
Что именно означает эта ошибка?Я пытаюсь вставить в свое приложение модель EF из существующей базы данных.До того, как это приложение было основано на CodeFirst и использовало шаблон репозитория, но на всю жизнь я не могу заставить его работать.
Раньше у меня было:
public class BaseModelContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
}
Но в модели EF- первый сценарий (тот, где таблицы уже существуют в БД), мне пришлось удалить их, так как не похоже, чтобы у них был шаблон репозитория в свойствах DbSet.Поэтому я удалил их, и тогда хранилище может использовать хранилище для классов, уже определенных в контекстном классе .designer.cs (модель EF).У него есть набор EdmSchemaAttribute внутри сгенерированного кода.
Итак, как мне заставить мой шаблон репозитория работать в сценарии сначала модель?Что конкретно означает вышеуказанная ошибка?
РЕДАКТИРОВАТЬ
Добавлен новый код:
public class BaseModelContext : DbContext
{
// public DbSet<Location> Locations { get; set; }
public BaseModelContext(string nameOrConnection)
: base(nameOrConnection)
{
}
public BaseModelContext()
{
}
}
public class VisitoriDataContext : BaseModelContext
{
public VisitoriDataContext()
: base("visitoriDataConnection")
{
}
}
public interface IVisitoriDataContextProvider
{
VisitoriDataContext DataContext { get; }
}
public class VisitoriDataContextProvider : IVisitoriDataContextProvider
{
public VisitoriDataContext DataContext { get; private set; }
public VisitoriDataContextProvider()
{
DataContext = new VisitoriDataContext();
}
}
public class VisitoriRepository<T> : IRepository<T> where T : class
{
protected readonly IVisitoriDataContextProvider _ctx;
public VisitoriRepository(IVisitoriDataContextProvider ctx)
{
_ctx = ctx;
}
public T Get(int id)
{
return _ctx.DataContext.Set<T>().Find(id);
}
}
public interface ILocationRepo : IRepository<Location>
{
IEnumerable<Location> GetSuggestedLocationsByPrefix(string searchPrefix);
}
public class LocationRepo : VisitoriRepository<Location>, ILocationRepo
{
public LocationRepo(IVisitoriDataContextProvider ctx)
: base(ctx)
{
}
public IEnumerable<Location> GetSuggestedLocationsByPrefix(string searchPrefix)
{
return Where(l => l.name.Contains(searchPrefix)).ToList();
}
}