带有EF抛出错误的.Net MVC存储库模式(Local抛出类型' System.InvalidOperationException'

时间:2017-02-06 16:37:16

标签: asp.net-mvc entity-framework repository-pattern

我从实体框架的objContext.warrantys属性中得到以下错误。

错误消息:调用' get_ProviderFactory'后返回null。类型为' 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;**
    }
}

1 个答案:

答案 0 :(得分: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>