Hello I'm trying to connect a Mysql Db (empty) with a WinForm using Entity Framework 'CodeFirst' but I have this first question 1.Can EntityFramework 'CodeFirst' create tables and columns into a Mysql Database? and If EF can do that as I suppose then why displays this exception when I try to add a record in a table. Here's the Code
Using:
- EF v6
- MySqlConnector v6.7.4.0
- .NET 4.0 Framework
- VS2012
App.config
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity">
</defaultConnectionFactory>
</entityFramework>
<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.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
<connectionStrings>
<add name="ConnectionStringName" connectionString="server=localhost;Database=auth;uid=root;pwd=1234;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
MySqlContext.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Unify.RoleCreator
{
public class MySqlContext : System.Data.Entity.DbContext
{
public System.Data.Entity.DbSet<LoginModel> LoginModel { get; set; }
public System.Data.Entity.DbSet<Roles> Roles { get; set; }
public MySqlContext(string connString)
: base(connString)
{ }
}
}
And Here is where the exception displays
at this line db.LoginModel.Add(user);
Program.cs
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using Unify.RoleCreator;
using System.Configuration;
namespace RoleCreatorv3
{
static class Program
{
[STAThread]
static void Main()
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MySqlContext>());
var connString = ConfigurationManager.ConnectionStrings["ConnectionStringName"].ToString();
using (var db = new MySqlContext(connString))
{
var user = new LoginModel { User = "admin", Pass= 123 };
db.LoginModel.Add(user);
db.SaveChanges();
}
Console.WriteLine("All ok!");
Console.Read();
}
}
}
and the References..
