ASP.net MVC5でADO.net Entity DataModelのデータベースからCoad First を使用して
Webアプリを作っていますが、ウィザードの途中でウィザードが終了してしまい、困っております。
対処法などでアドバイスなどを教えていただけるでしょうか?
•Visual Studio 2017 (C#)
•MySQL Server 8.0.12
•EntityFramework 6.2.0
◦MySql.Data 8.0.12
•MySql.Data.Entity 6.10.8
•MySql.Web 8.0.12
•MySQL mysql connector net 8.0.12
•mysql for visualstudio 1.2.8
国語力がなくすみません。2年前くらいに VisualStudio2015 ASP.net MVC5 + OralcleでWebシステムを作ったのである程度は理解していると思います。手順を追記させていただきました。
退会済みユーザー
2018/10/15 01:24 編集
既存の DB が存在していて、それをベースに Entity Data Model を作成してアプリで利用するのは、Code First ではなくて、DB First と言うと思うのですが? Code First というのは、DB が存在しない状態で、アプリのコードをベースに DB を生成することのはずです。
既存の DB が存在していて、それをベースに Entity Data Model を作成してアプリで利用しますが、ウィザード上の選択では「データベースからのCode First」となっています。説明部にも「既存のデータベースに基づいてCode Firstモデルを作成します」との文言があるので正しい認識でいますが、間違えていますかね?
退会済みユーザー
2018/10/15 02:18
「データベースから Code First」は、ウィザードで表示される説明にあるように "既存のデータベースに基づいて Code First モデルを作成します" というもの、つまり EF Code First の機能を使って DB を生成するためのコードを作成するためのもののはずです。(実際に使ってみると接続してデータを取得できるのですが、保証の限りではなさそうです)
退会済みユーザー
2018/10/15 02:20
そこは「データベースから EF Designer」を選ぶべきと思います・・・が、それが問題の原因ではなさそうです。でも、物は試しということで一度やってみてはいかがですか?
対処後、再度チュートリアルの「Adding an Entity Data Model」に従って作業すれば完成するはずです。
ここまで出来たら、一旦ビルドして、EDM を使えるようになるはずです。
例えば、以下のようなコードを書けば、
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsMySqlEdm2
{
public partial class Form1 : Form
{
private DataGridView dataGridView1;
private BindingSource bindingSource1;
private worldEntities context;
public Form1()
{
InitializeComponent();
this.dataGridView1 = new DataGridView();
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.bindingSource1 = new BindingSource();
this.dataGridView1.DataSource = this.bindingSource1;
this.Controls.Add(this.dataGridView1);
this.context = new worldEntities();
var data = from c in context.city
where c.CountryCode == "JPN"
select new SelectedCities
{
Name = c.Name,
District = c.District,
Population = c.Population
};
this.bindingSource1.DataSource = data.ToList();
}
}
public class SelectedCities
{
public string Name { get; set; }
public string District { get; set; }
public int Population { get; set; }
}
}
とすると、自分には分からないですね。
「ASP.net MVC5 でコードファースト」とか書くと中身を見ないでスルーする人が多いと思いますので、「MySQL で ADO.NET Entity Data Model を作成」というタイトルにして、ASP.NET ではない C# のアプリの話として、新たに別のスレッドを立てて質問し直した方が良いかもしれません。
退会済みユーザー
2018/10/15 22:17 編集
一つだけ気がついたことを書きます。
質問者さんの環境の MySQL for Visual Studio のバージョンは 1.2.7 とのことですが、そうすると上に紹介した自分のケース (1.2.6) とは Visual Studio が使う Connector/NET のバージョンが異なるかもしれません。その辺りを調べてみてはいかがですか?