我正在使用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"" 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'.
为什么会这样?连接字符串是完全正确的
答案 0 :(得分:0)
我可以看到这里发生的三件事:
1)DbContext
的构造函数应该使用连接字符串的名称,因此将其更改为FBuyShopContext
而不是name=FBuyShopContext
。
public class FBuyShopContext : DbContext
{
public FbuyShopContext() : base("FBuyShopContext") {}
}
2)您的连接字符串以"
结尾,这是一个无效字符。你应该删除它。
3)您应该使用fluent API或数据注释在模型上指定主键:
public class Product {
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
我很确定你得到的错误是由2)引起的,但是1)和3)会在以后引起你的问题。