2017-02-06 1 views
-1

Je reçois ci-dessous erreur de la propriété objContext.warrantys du cadre de l'entitéModèle .Net MVC Repository avec EF lancer erreur (local a lancé une exception du type 'System.InvalidOperationException'

Message d'erreur:. Une valeur NULL a été retourné après appelant la méthode 'get_ProviderFactory' sur une instance de fournisseur de magasin de type 'System.Data.OleDb.OleDbConnection'. le fournisseur de magasin peut ne pas être fonctionne correctement.

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

en 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() 
    { 
    } 
} 

Maintenant, je vais ajouter la classe dbcontext.

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

maintenant de ma classe de service de garantie mis en œuvre ici

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

Vous n'utilisez pas 'objContext.warrantys.Local' dans le le code que vous affichez, ni le code qui provoque l'erreur. –

+0

Je n'utilise pas objContext.warrantys.Local. Je suis au-dessus de cette erreur de objContext.warrantys sous la fonction GetAllWarranty(). –

+0

Je vais essayer de reformuler ma question. 'GetAllWarranty()' renvoie uniquement une requête. Il ne l'exécute pas *. Donc ma question est: où appelez-vous la méthode 'GetAllWarranty()' d'une manière que l'erreur est levée? Il semble assez absurde qu'un appel à 'objContext.warrantys' essaye aussi d'accéder à la collection' Local'. –

Répondre

0

Il semble que vous devez vérifier la chaîne de connexion dans le web.config (application Web) ou app.config (autre). N'hésitez pas à poster ici aussi. Vous semblez utiliser l'OLEDB, et vous devriez utiliser SqlClient natif à la place.

Vous devriez avoir quelque chose qui ressemble à ceci (db local dans ce cas, mais pourrait être SQL pour vous), par exemple:

<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

J'ai modifié ma chaîne de connexion. Je reçois ci-dessous erreur: Une erreur est survenue lors de l'accès à la base de données. Cela signifie généralement que la connexion à la base de données a échoué. Vérifiez que la chaîne de connexion est correcte et que le constructeur DbContext approprié est utilisé pour le spécifier ou le trouver dans le fichier de configuration de l'application. Message d'exception interne: le fournisseur n'a pas renvoyé une chaîne ProviderManifestToken. –

+0

Vous utilisez toujours un fournisseur de chaînes de connexion au format OLEDB. Essayez-vous de vous connecter à un fichier MS Access ou quelque chose? Si vous vous connectez à une entrée SQL Server, votre chaîne de connexion devrait ressembler à: ' ' – Sunny

+0

Si c'est le cas, vous devrez peut-être [regarder d'autres ressources pour combler le fossé] (https://jetentityframeworkprovider.codeplex.com/) – Sunny