MVC4 + Entity Framework 4.4 + MySql + POCO/コード ファースト
上記の構成をセットアップしています..ここに私のクラスがあります:
namespace BTD.DataContext
{
public class BTDContext : DbContext
{
public BTDContext()
: base("name=BTDContext")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//modelBuilder.Conventions.Remove<System.Data.Entity.Infrastructure.IncludeMetadataConvention>();
}
public DbSet<Product> Products { get; set; }
public DbSet<ProductImage> ProductImages { get; set; }
}
}
namespace BTD.Data
{
[Table("Product")]
public class Product
{
[Key]
public long ProductId { get; set; }
[DisplayName("Manufacturer")]
public int? ManufacturerId { get; set; }
[Required]
[StringLength(150)]
public string Name { get; set; }
[Required]
[DataType(DataType.MultilineText)]
public string Description { get; set; }
[Required]
[StringLength(120)]
public string URL { get; set; }
[Required]
[StringLength(75)]
[DisplayName("Meta Title")]
public string MetaTitle { get; set; }
[DataType(DataType.MultilineText)]
[DisplayName("Meta Description")]
public string MetaDescription { get; set; }
[Required]
[StringLength(25)]
public string Status { get; set; }
[DisplayName("Create Date/Time")]
public DateTime CreateDateTime { get; set; }
[DisplayName("Edit Date/Time")]
public DateTime EditDateTime { get; set; }
}
[Table("ProductImage")]
public class ProductImage
{
[Key]
public long ProductImageId { get; set; }
public long ProductId { get; set; }
public long? ProductVariantId { get; set; }
[Required]
public byte[] Image { get; set; }
public bool PrimaryImage { get; set; }
public DateTime CreateDateTime { get; set; }
public DateTime EditDateTime { get; set; }
}
}
これが私のweb.configセットアップです...
<connectionStrings>
<add name="BTDContext" connectionString="Server=localhost;Port=3306;Database=btd;User Id=root;Password=mypassword;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
- データベースとテーブルは既に存在します...
- 私はまだmvcでかなり新しいですが、このチュートリアルを使用していました
アプリケーションは正常にビルドされます...ただし、Product (BTD.Data) をモデル クラスとして使用し、BTDContext (BTD.DataContext) をデータ コンテキスト クラスとして使用してコントローラーを追加しようとすると、次のエラーが表示されます。
同じ DbCompiledModel を使用して BTD.Data.Product のメタデータを取得して、異なる種類のデータベース サーバーに対してコンテキストを作成できないことはサポートされていません。代わりに、使用するサーバーの種類ごとに個別の DbCompiledModel を作成してください。
私は完全に途方に暮れています-私が考えることができる上記のエラーメッセージのほぼすべての異なるバリエーションでGoogleを精査しましたが、役に立ちませんでした.
以下、確認できる事項です...
- MySql は正常に動作しています
- 私は MySql Connector バージョン 6.5.4 を使用しており、他の ASP.net Web フォーム + エンティティ フレームワーク アプリケーションをゼロの問題で作成しました。
また、これをweb.configに含めたり削除したりしようとしました:
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient"/>
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
私は文字通りこのバグに何日も取り組んできました-私はそれを解決するために誰かに喜んでお金を払うつもりです..冗談ではありません...私はMVC 4とRazorを本当に使いたいです-私はこれを始めることにとても興奮していましたが、今ではかなりがっかりしています - これに関する助け/ガイダンスに本当に感謝しています!
また、注意してください-私はNugetのEntityframeworkを使用しています...
別のメモ
アカウント ページなどで MVC プロジェクトを作成するデフォルトのビジュアル スタジオ テンプレートを使用していました。存在しない「DefaultConnection」を使用しようとしていたため、追加されたファイルへのすべての参照を削除しました-したがって、それらのファイルがエラーの原因である可能性があると思いました-しかし、それらを削除した後もまだ運がありません-
たくさんのファイルを事前に作成するビジュアル スタジオ MVC プロジェクト テンプレートを使用していることをみんなに知らせたかっただけです。これらのファイルを持たない空の MVC プロジェクトからこれをすべて再作成しようとしています - テストしたらこれを更新します
VS MVC 基本テンプレートを使用するように更新:同じエラーが発生しました - まだ解決策はありません
同じ問題を経験している別の人
ここに、私のものを模倣した別のスタックオーバーフローの質問があります-しかし、私は彼の解決策を試してみましたが、役に立たなかった-おそらく、同じ問題を抱えている他の誰かがリンクから恩恵を受けることができます
アップデート
私は最近、これをMS Sql Serverに入れようとしましたが、ビューの足場はエラーなしでうまく追加されました.
その他の参考文献
他の誰かが私と同じ問題を抱えているようです-唯一の違いは、彼らがSQLサーバーを使用していることです-すべてのコードを微調整して、このスタックオーバーフローの質問/回答の提案に従ってみましたが、それでも役に立ちません
可能な修正???
これは奇妙です... MS Sqlサーバーに接続してコントローラーを追加した後、接続文字列をMySqlに戻すと、実際にはMySqlで動作しています...一体何!??
したがって、コントローラーを追加しようとすると、ビューの足場 (正しいフレーズですか?) が追加され、mysql 接続文字列が失敗するようです...ただし、それを SQL サーバー データベースに接続すると、足場が生成されます。 /controller、それから動作する mysql 接続文字列に戻ります.... ?!?!