0

我正在使用实体框架来连接 MySql。我已经使用 MySql 数据库创建了一个实体数据模式,它会自动在 web.config 中生成连接字符串,在我的例子中如下所示:-

 <add name="entityframework1" connectionString="metadata=res://*/EntityFramework.csdl|res://*/EntityFramework.ssdl|res://*/EntityFramework.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;User Id=root;database=entityframework&quot;" providerName="System.Data.EntityClient" />

现在我想将记录保存在数据库中,代码如下:-

        employee emp = new employee();
        emp.Name = txtName.Text;
        emp.Age = Convert.ToInt32(txtAge.Text);

        using (entityframework context =
              new entityframework())
        {

            context.AddToemployees(emp);
            if (context.SaveChanges() == 1)
            {
                lblMsg.Text = "Saved Successfully.";
            }
        }

它给出了错误

在具有“context.SaveChanges”的 if 条件下,“对象引用未设置为对象的实例”。

我还尝试在创建上下文时传递连接字符串

string connectionstring = "SERVER=localhost;DATABASE= entityframework ;UID= root;";

但它给出了“不支持关键字:'”服务器'的错误。”这是我在实体框架中的第一次尝试,有没有人可以建议我。

4

2 回答 2

0

您还需要将以下内容添加到您的 web.config 文件中(将版本字符串替换为您的 MySQL .NET 连接器的适当版本)

<system.data><DbProviderFactories>
  <clear />
  <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.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories></system.data>
于 2013-02-17T05:52:11.210 回答
0

如果您可以从服务器检索数据,则连接字符串很好。

至于 SaveChanges() 尝试context.ChangeTracker.DetectChanges()首先调用,作为成功条件,您可以将实体的初始 id 设置为 -1 例如,然后检查它是否 >= 0。(也就是说,如果您的 PrimaryKey 也是 Autoincrement/Identity )

于 2013-02-01T12:42:54.880 回答