1

背景: ASP.net MVC 4 アプリと mysql データベースを既に作成しています。コード ファーストを使用してデータベースを生成しました。Web アプリは、データを操作するための UI として使用されます。ただし、データは別の C# プログラムで作成されます。シリアルデバイスからテストデータを取得します。

問題: C# アプリケーションでエンティティ フレームワークを使用してデータベースに接続する方法がわかりません。

C# アプリで使用する新しいモデルを既に作成しています。共有 .DLL を使用することは最善のアイデアではないことを読みました。

これは私がこれまでに持っているものです。

    private ReportDBContext db = new ReportDBContext();

    private void saveReport()
    {
        string connStr = "server=RnD-Chopper;user=CWXDAQ;database=ReportDB;port=3306;password=QADXWC;";
        MySqlConnection conn = new MySqlConnection(connStr);
        try
        {

            db.Reports.Add();

            // Perform database operations
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
        conn.Close();
        Console.WriteLine("Done.");




        unlockGUI();
    }

レポート モデル

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using MySql.Data.Entity;
using MySql.Data.MySqlClient;
using System.Linq;
using System.Web;

namespace CXW__DAQ___Record.Models
{
    public class Report
    {
        [Display(Name = "Test ID #")]
        public int ID { get; set; }

        [Required(ErrorMessage = "Test Name is Required")]
        [Display(Name = "Test Name")]
        public string Name { get; set; }

        [Display(Name = "Date Tested")]
        public DateTime TestDate { get; set; }

        [Display(Name="Test Done For")]
        public string TestFor { get; set; }

        public string Comment { get; set; }

        public enum enumForceUnits { lbs };
        public enum enumTimeUnits { mS };

        [Required(ErrorMessage = "Unit of Force (ForceUnit) is required")]
        public enumForceUnits forceUnit;

        [Required(ErrorMessage = "Unit of Time (TimeUnit) is required")]
        public enumTimeUnits timeUnit;

        public virtual ICollection<Reading> Readings { get; set; }

    }


    public class Reading
    {
        public int ID { get; set; }

        public virtual Report Report { get; set; }

        public long Time { get; set; }
        public double Force { get; set; }
    }


    public class ReportDBContext : DbContext
    {
        public DbSet<Report> Reports { get; set; }
        public DbSet<Reading> Readings { get; set; }
    }
}
4

2 に答える 2

0

私は自分でそれを理解しました。接続文字列を app.config ファイルに追加し、Entity Framework Power Toolsをインストールしてから、それを使用してデータベースからモデルをリバース エンジニアリングする必要があります。

接続文字列を作成するときは、Persist Security Info=True を設定してください。

また、私が遭遇した別の問題は、Visual Studios が、インストールされたバージョンの 6.7.4 ではなく、6.6.5 バージョンのコネクタを使用しようとし続けたことです。

したがって、この行を app.config ファイルにも追加する必要がありました

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.6.5.0" newVersion="6.7.4.0" />           
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
于 2013-08-05T21:33:25.407 に答える