2017-02-06 10 views
-1

Я получаю ниже ошибки от objContext.warrantys имущества рамки сущности.Net MVC Repository шаблон с EF метания Error (Local бросил исключение типа «System.InvalidOperationException»

Сообщение об ошибке:. Нуль был возвращен после того, как называя «get_ProviderFactory» метод на экземпляре магазин поставщика типа 'System.Data.OleDb.OleDbConnection. поставщик магазин не может работать некорректно.

Local 'objContext.warrantys.Local' threw an exception of type 'System.InvalidOperationException' System.Collections.ObjectModel.ObservableCollection<DSGWarrantyServiceRep.Core.warranty> {System.InvalidOperationException}

в Web.config,

public class warranty 
{ 

    public int WarrantyId 
    { 
     get; 
     set; 
    } 

    [Required(ErrorMessage =" Please provide Warrranty Name")] 
    [MinLength(4)] 
    public string WarrantyName 
    { 
     get; 
     set; 
    } 
    [Required(ErrorMessage = " Please provide Warrranty Period")] 
    public string WarrantyPeriod 
    { 
     get; 
     set; 
    } 
    [Required(ErrorMessage = " Please provide UPC Nbr")] 
    public string UpcNbr 
    { 
     get; 
     set; 
    } 
    public warranty() 
    { 
    } 
} 

Теперь я собираюсь добавить класс dbcontext.

public class WarrantyContext:DbContext 
{ 
    public WarrantyContext() : base("name=warrantyConnectionString") 
    { 
    } 
    public DbSet<warranty> warrantys { get; set; } 
} 

Теперь из моего класса гарантийного обслуживания здесь реализована

public class WarrantyService : IWarrantyService 
{ 
    WarrantyContext objContext = new WarrantyContext(); 

    public void AddWarranty(warranty ws) 
    { 

     objContext.warrantys.Add(ws); 
     objContext.SaveChanges(); 
    } 
    public IEnumerable<warranty> GetAllWarranty() 
    { 
     **return objContext.warrantys;** 
    } 
} 
+0

Вы не можете использовать 'objContext.warrantys.Local' в код, который вы показываете, и вы не показываете код, вызывающий ошибку. –

+0

Я не использую objContext.warrantys.Local. Я получаю выше указанную ошибку от objContext.warrantys в функции GetAllWarranty(). –

+0

Я постараюсь перефразировать мой вопрос. 'GetAllWarranty()' возвращает запрос только. Он не * выполняет * это. Поэтому мой вопрос: где вы вызываете метод GetAllWarranty() 'таким образом, чтобы ошибка была выбрана? Представляется довольно абсурдным, что вызов 'objContext.warrantys' также пытается получить доступ к коллекции' Local'. –

ответ

0

Это выглядит так, как будто вам нужно проверить строку соединения в web.config (веб-приложение) или app.config (другой). Не стесняйтесь публиковать его здесь. Кажется, вы используете OLEDB, и вместо этого вы должны использовать собственный SqlClient.

Вы должны иметь что-то, что выглядит как этот (локальный дб в этом случае, но может быть SQL для вас), например:

<connectionStrings> 
<add name="warrantyConnectionString" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-TestApp1-20170112094217.mdf;Initial Catalog=aspnet-TestApp1-20170112094217;Integrated Security=True" providerName="System.Data.SqlClient" /> 
</connectionStrings> 
+0

Я изменил строку подключения. Я получаю ниже ошибки: произошла ошибка при доступе к базе данных. Обычно это означает, что соединение с базой данных не удалось. Убедитесь, что строка подключения верна и что соответствующий конструктор DbContext используется для указания или поиска в конфигурационном файле приложения. Внутреннее сообщение об исключении: поставщик не возвратил строку ProviderManifestToken. –

+0

Вы все еще используете поставщик строки подключения, отформатированный для OLEDB. Вы пытаетесь подключиться к файлу MS Access или что-то еще? Если вы подключаетесь к SQL Server, подключение входа строка должна выглядеть следующим образом: '<добавить имя = "WarrantyDatabase" ConnectionString =" Data Source = ServerName \ SqlServerName; Initial Catalog = DatabaseName; Integrated Security = SSPI ; MultipleActiveResultSets = True;» providerName = "System.Data.SqlClient" /> ' – Sunny

+0

Если это так, вам может потребоваться [посмотреть другие ресурсы, чтобы устранить пробел) (https://jetentityframeworkprovider.codeplex.com/) – Sunny