实体框架,连接字符串抛出formatexception

时间:2014-12-18 14:17:22

标签: entity-framework connection-string

我正在使用Entity Framework 6.1.1

我在一个项目中有一个类,其中包括FBuyShopContext,另一个用于模型,以及一个带有MVC 5的Asp项目

在我的第一个项目中,我有以下

public class FBuyShopContext : DbContext
{
    public FBuyShopContext()
        : base("name=FBuyShopContext")
    {
    }


    public virtual DbSet<Product> Admins { get; set; }
}

}

其他图书馆项目中的产品模型

public class Product
{
    public Product()
    {}

    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
}

我的连接字符串是

 <connectionStrings>
<add name="FBuyShopContext" connectionString="data source=tschikovani\SQLEXPRESS;initial catalog=OnlineShop;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

当我想在我的控制器中将新产品添加到数据库

FBuyShopContext db = new FBuyShopContext();
Product new = new Product ();
new.Name = "Iphone";
db.Products.Add(new);
db.SaveChanges();

我有以下异常

An exception of type 'System.ArgumentException' occurred in EntityFramework.dll
keyword not supported: 'data source'.

为什么会这样?连接字符串是完全正确的

1 个答案:

答案 0 :(得分:0)

我可以看到这里发生的三件事:

1)DbContext的构造函数应该使用连接字符串的名称,因此将其更改为FBuyShopContext而不是name=FBuyShopContext

 public class FBuyShopContext : DbContext
 {
      public FbuyShopContext() : base("FBuyShopContext") {}
 }

2)您的连接字符串以&quot;结尾,这是一个无效字符。你应该删除它。

3)您应该使用fluent API或数据注释在模型上指定主键

 public class Product {
      [Key]
      public int Id { get; set; }

      [Required]
      public string Name { get; set; }
 }

我很确定你得到的错误是由2)引起的,但是1)和3)会在以后引起你的问题。