首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体数据模型向导中未显示的MySQL数据提供程序

问实体数据模型向导中未显示的MySQL数据提供程序
EN

Stack Overflow用户
提问于 2018-02-01 10:39:27
回答 3查看 4.7K关注 0票数 8

我正在创建一个以MySQL为后端的MVC应用程序。我计划使用实体框架来处理这个数据库。我已经有了一个数据库,所以需要从数据库生成模型。

环境:

Visual 1.27连接器/.NET 6.10.5 Visual 2015的MySQL服务器5.7.21 MySQL

复制问题:

步骤1:添加新项目'Ado.net实体数据模型‘步骤2:从数据库中选择'EF设计器’并单击‘下一步’第3步:单击‘新建连接’

没有mysql连接器可用。

其他详细信息:

  1. 我已经添加了“System.Runtime”,因为它在安装Mysql时显示了错误。数据。金块Ef6
  2. 我在‘System.Data’程序集引用中更改了"CopyLocal= true“
  3. 我在2017中尝试了相同的步骤。在这里,我可以在步骤3中看到提供程序,但是单击“确定”对话框关闭,而不是显示表列表。

在Visual 2015和17初始时间中,它显示提供程序。当我下一次尝试时,它没有显示“请帮助”。我要检查这个两天

EN

回答 3

Stack Overflow用户

发布于 2018-02-20 18:44:51

开始使用VS 2013和EF 6

  1. 安装VisualStudio1.1.1的MySQL
  2. 安装连接器/NET6.8.1产品。
  3. 要首先使用数据库,请执行以下
    • 添加名为MySql.Data.Entity.EF6的新程序集的引用,并将其复制到应用程序的bin forlder。
    • 将提供程序添加到实体框架提供程序部分的app/web配置文件中,行如下:
    • 在运行向导之前,请编译应用程序,以便应用新的更改。

​

  1. 若要首先使用模型,请执行以下操作
    • 添加名为MySql.Data.Entity.EF6的新程序集的引用,并将其复制到应用程序的bin forlder。
    • 添加新的或现有的ADO.Net实体模型。
    • 选择与T4相对应的MySQL模板(SSDLToMySQL)
    • 右键单击模型,然后选择Generate创建数据库。(应该为您创建数据库生成一个MySQL脚本)。

​

希望这能帮点忙。

VisualStudio1.1.1的MySQL

MySQL连接器/.NET 6.8.1 Beta

票数 2
EN

Stack Overflow用户

发布于 2018-02-16 10:47:17

正如MaDOS所提到的,mySql不受实际支持。如果您想要使用EF无论如何,您必须做一个代码优先-尝试。

您必须编写映射类,并告诉EF它不应该更改db。

禁用db的示例上下文-更改

代码语言:javascript
复制
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世界之外,并不是所有的数据类型都被支持(甲骨文在DateTime上也遇到了一些问题)。在示例类中,“创建”-column下面的类作为字符串处理,该字符串总是工作的。在.NET应用程序中,您必须实现映射到所需类型的“转换器”-properties。

具有映射的类.配置

代码语言:javascript
复制
[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 ;)
    }

Im没有最新的类型工作,但有了这一点,您将永远能够使用EF。一段时间前,我们使用它访问一个现有的db,它无论如何都是一个糟糕的db模式,因为我们无论如何都需要设置数据类型的模式;)。

票数 0
EN

Stack Overflow用户

发布于 2018-02-21 14:59:59

会不会是32位vs 64位的问题?

示例:安装了64位驱动程序的Visual是32位吗?

对于oledb到Informix,我一直存在这个问题。您的软件将完美地工作在64位,但工具是32位。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48560729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档