1

Entity Framework 6 をインストールし、Visual Studio 2012 を使用して練習しています。WPF アプリケーションを作成し、ADO.NET Entity Data Model を追加して、localhost にある MySQL データベースに接続しました。(データ モデルの) デザインのプロパティで、「コード生成戦略」の値を「デフォルト」に変更して、コードが生成されるようにModel1.Designer.csしました。しかし、それが生成するコードにはエラーがあります:

    //------------------------------------------------------------------------------
    // <auto-generated>
    //    This code was generated from a template.
    //
    //    Manual changes to this file may cause unexpected behavior in your application.
    //    Manual changes to this file will be overwritten if the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------

    using System;
    using System.ComponentModel;
    using System.Data.EntityClient;
    using System.Data.Objects;
    using System.Data.Objects.DataClasses;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.Xml.Serialization;

    [assembly: EdmSchemaAttribute()]
    #region EDM Relationship Metadata

    [assembly: EdmRelationshipAttribute("SchoolDBModel", "studentcourse", "course", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(WpfApplication1.course), "student", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(WpfApplication1.student))]

    #endregion

    namespace WpfApplication1
    {
        #region Contexts

        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public partial class SchoolDBEntities : ObjectContext
        {
            #region Constructors

            /// <summary>
            /// Initializes a new SchoolDBEntities object using the connection string found in the 'SchoolDBEntities' section of the application configuration file.
            /// </summary>
            public SchoolDBEntities() : base("name=SchoolDBEntities", "SchoolDBEntities")
            {
                this.ContextOptions.LazyLoadingEnabled = true;
                OnContextCreated();
            }
    // More code below with errors...

最初のエラーは、コンストラクターのベース コールです。

'System.Data.Entity.DbContext.DbContext(string, System.Data.Entity.Infrastructure.DbCompiledModel)' に最も一致するオーバーロードされたメソッドには、無効な引数がいくつかあります

そして次のエラーは、それが設定されている行ですthis.ContextOptions.LazyLoadingEnabled、それは言います

'WpfApplication1.SchoolDBEntities' には 'ContextOptions' の定義が含まれておらず、タイプ 'WpfApplication1.SchoolDBEntities' の最初の引数を受け入れる拡張メソッド 'ContextOptions' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

エラーのあるコードを生成する理由を知っている人はいますか?

4

2 に答える 2

0

Entity Framework6 では、レガシー コンテキストを使用できます。edmx ファイルを右クリックし、[オプションで開く] を選択して XML ビューアーで開きます。次に、legacy を検索し、その値を true に設定します。

于 2016-05-21T07:39:08.933 に答える