2017-02-06 48 views
-1

我得到下面的错误从实体框架的objContext.warrantys财产净MVC库模式与EF抛出错误(本地扔类型的异常“System.InvalidOperationException”

错误消息:空被退回后,调用类型“System.Data.OleDb.OleDbConnection”的存储提供实例的“get_ProviderFactory”的方法。存储提供可能无法正常工作。

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。我在GetAllWarranty()函数下获取objContext.warrantys的上述错误。 –

+0

我会尝试重述我的问题。 'GetAllWarranty()'只返回一个查询。它不执行*它。所以我的问题是:你在哪里调用'GetAllWarranty()'方法来引发错误?对'objContext.warrantys'的调用也尝试访问'Local'集合似乎很荒谬。 –

回答

0

实现它看起来好像你需要检查在web.config(Web应用程序)的连接字符串或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,则连接字符串条目应如下所示: '' – Sunny

+0

如果是这种情况,您可能需要[查看其他资源以缩小差距](https://jetentityframeworkprovider.codeplex.com/) – Sunny

相关问题