我正在用MySQL作为后端创建一个MVC应用程序。我打算使用Entity Framework来处理这个数据库。我已经有了一个数据库,所以需要从数据库中生成模型
环境:
MySQL Server 5.7.21 MySQL for Visual Studio 1.27 Connector / NET 6.10.5 Visual Studio 2015
重现问题:
第1步:添加新项目' Ado.net实体数据模型' 第2步:从数据库中选择' EF Designer'然后点击'下一步' 第3步:点击“新建连接”
没有可用的mysql连接器。
其他详细信息:
在Visual Studio 2015和17初始时间,它显示提供程序。当我下次尝试它没有显示时 请帮忙。我正在检查这2天
答案 0 :(得分:2)
开始使用VS 2013和EF 6
希望这会有所帮助。
答案 1 :(得分:0)
正如MaDOS所说,mySql并非真正支持。如果你想要使用EF,你必须先进行代码尝试。
您必须编写映射类,并告诉EF它不应该更改db。
public class MySqlDbContext : DbContext
{
public DbSet<MyOrderClass> Orders { get; set; }
public MySqlDbContext(IDbConnection connection)
: base((DbConnection)connection, false)
{
Database.SetInitializer<MySqlDbContext>(null); // Disable db-changes by dbContext
}
}
您的主要问题是数据类型。在MS-world之外,并非所有数据类型都受支持(Oracle也遇到了DateTime的一些问题)。在下面的示例类中,&#34; Created&#34; -column作为字符串处理,它始终有效。在.Net应用程序中,您必须实现映射到所需类型的&#34; converter&#34; -properties。
[Table("TORDERS")]
public class MyOrderClass
{
[Column("ORDERID")]
public long Id { get; set; }
[Column("CREATED")]
public string CreatedString { get; set; }
[NotMapped]
public DateTime? Created
{
get
{
DateTime tmp;
if (DateTime.TryParse(this.CreatedString, out tmp))
return tmp;
return null;
}
set
{
this.CreatedString = value.HasValue ? value.Value.ToString("yyyy-MM-dd HH:mm:ss") : null;
}
}
}
static void Main(params string[] args)
{
MyOrderClass tmp = new MyOrderClass() { CreatedString = "2018-01-01 11:11:11"};
Console.WriteLine(tmp.Created.ToString()); // This is how you want to work
tmp.Created = null;
Console.WriteLine(tmp.CreatedString); // this is surely not what you want to do
tmp.Created = new DateTime(2018,02,02,10,10,10);
Console.WriteLine(tmp.CreatedString); // Check if setter works ;)
}
我不是uptodate哪种类型的工作,但有了这个,你总是能够使用EF。 我们前段时间使用它来访问一个现有的数据库,无论如何这都是一个糟糕的数据库模式,因为我们无论如何都要设置数据类型的模式;)。
答案 2 :(得分:0)
这可能是32位对64位问题吗?
示例:安装64位驱动程序Visual Studio是32位?
使用oledb到Informix,我一直有这个问题。你的软件将在64位完美工作,但工具是32位。