Я немного сбит с толку из-за того, что мне не хватает в конфигурациях или что-то, что ставит этот камень на моем пути.
Что я пытаюсь сделать? Мой оригинальный тестовый случай был просточтобы получить коллекцию, .ToList (), а затем передать это API.Ваш довольно стандартный запрос EF.
Код
using (var _dbContext = new FooContext())
{
ICollection<Location> locationItems = _dbContext.Locations.ToList();
return locationItems;
}
Я действительно не чувствую, что это необходимо, но это все, что вращается вокруг.
Что такое мойвыпуск?
Это тот момент, когда он перестает иметь смысл для меня и дает мне четкие указания на то, что на заднем плане что-то упущено.Скорее всего, это очень простой блок конфигурации или настройки.Когда я пытаюсь .ToList () в своих Locations или перечислять их с помощью отладчика (на самом деле тоже самое), я получаю «InvalidOperationException» в каждой коллекции, которую знает мой _dbContext.
Позвольте мне исключить очевидные вопросы, Время вопросов и ответов.
Q: Это даже связано с вашей базой данных?
A: Да, _dbContext.Database.Exists () возвращает мне true , проверка _dbContext.Database с помощью отладчика также дает мне много соответствующей информации, подтверждающей контакт с сервером SQL, с которым я пытаюсь связаться.
В: Есть ли данные вваша база данных SQL?
A: Да, много.Проверено с помощью SSMS.
В: Ваш DbContext даже знает эти Коллекции?
A: Я верю в это?
public class FooContext : DbContext
{
public FooContext() : base("name=FooDB")
{
}
public DbSet<Car> Cars { get; set; }
public DbSet<FooEntry> FooEntries { get; set; }
public DbSet<ContactDetails> ContactDetails { get; set; }
public DbSet<Country> Countries { get; set; }
public DbSet<Equipment> Equipment { get; set; }
public DbSet<FuelType> FuelTypes { get; set; }
public DbSet<Location> Locations { get; set; }
public DbSet<Meeting> Meetings { get; set; }
public DbSet<Option> Options { get; set; }
public DbSet<Person> Persons { get; set; }
public DbSet<VehicleType> VehicleTypes { get; set; }
// force any DateTime fields to be DateTime2
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Properties<DateTime>()
.Configure(c => c.HasColumnType("datetime2"));
}
}
Кроме того, я, вероятно, должен указать, что я выполняю несколько более сложных операций в другом проекте, когда я импортирую / загружаю данные из Sharepoint в БД. Все это работает.
Предоставление контекста относительно того, как примерно выглядит моя структура решения:
- Несколько проектов с определенными проблемами
- Foo.EntityFramework содержит конфигурацию FooContext, Migrations и т. Д., Ваш материал EF.
- Foo.DomainClasses - это классы, на которых EntityFramework основывает всю свою структуру на
- Foo.Dao.Impl, содержащей конкретныйобъекты для CRUD.<- код здесь </li>
- Foo.SharepointImporter - проект, который использует EntityFramework _dbContext для выполнения CRUD, все работает, хотя и не использует Foo.Dao.Impl.
Дайте мне знать, если вам нужна дополнительная информация, чтобы сделать обоснованное предположение, что здесь происходит не так.
Запросы на комментарии:
@ mjwills: "Достигается ли точка останова для «return locationItems»? - Нет, это происходит в строке с .ToList ()
@ DavidG: «Что такое полное исключение?» - {«НетОбнаружен поставщик Entity Framework для поставщика ADO.NET с инвариантным именем «System.Data.SqlClient».Убедитесь, что поставщик зарегистрирован в разделе «entityFramework» конфигурационного файла приложения.См. http://go.microsoft.com/fwlink/?LinkId=260882 для получения дополнительной информации. "} - Я чувствую себя немного глупо сейчас, когда сам не углубился в это Исключение, это выглядит очень многообещающе.