我正在尝试用MySql数据库学习实体框架。
尝试使用以下代码保存数据:
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (txtName.Text == string.Empty ||
txtAge.Text == string.Empty)
{
lblMsg.Text = "Please enter proper details first";
return;
}
employee emp = new employee();
emp.Name = txtName.Text;
emp.Age = Convert.ToInt32(txtAge.Text);
using (entityframeworkEntities context =
new entityframeworkEntities())
{
context.AddToemployees(emp);
if (context.SaveChanges() == 1) // Error Part
{
lblMsg.Text = "Saved Successfully.";
}
}
}
代码在Object Reference
上收到if (context.SaveChanges() == 1)
错误。即使emp
也未添加到contaxt
对象。
当我调试代码时,调试器转到以下部分:
public entityframeworkEntities() :
base("name=entityframeworkEntities", "entityframeworkEntities")
{
this.OnContextCreated();
}
即使在这一部分,调试器也会进入大括号,但跳过this.OnContextCreated();
行。
这是我在Web.Config中的连接字符串
<add name="entityframeworkEntities" connectionString="metadata=res://*/ApplicationWithMySql.csdl|res://*/ApplicationWithMySql.ssdl|res://*/ApplicationWithMySql.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;User Id=root;password=root;database=entityframework"" providerName="System.Data.EntityClient" />
请帮帮我,我哪里错了?
谢谢!
答案 0 :(得分:0)
你可能忽略了几件事。不是一个答案。很长时间发表评论
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.3.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
a.build clean。
b.build mysql dll进入你的bin目录
c。为MySQL.Data和MySQL.Data.Entities安装nuget包。((右键单击程序集并确保在构建之前将Copy Local设置为true)
d。完全移除版本= 6.3.5.0标记并在VS.type =“MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data”上进行构建而不进行任何版本控制,而不是指定完整版本数据。