12

Web アプリケーションを別の環境にデプロイする際に小さな問題が発生しています。Entity Framework Code First アプローチを使用してアプリケーションのデータベースを作成しました (モデルから自動作成されたデータベース)。この開発環境では、統合セキュリティを使用しており、テーブルは dbo ユーザーの下に作成されています。テーブルは
     [dbo] .[myTable]のようなものです

他の環境では、DB にユーザー名/パスワード認証を使用しています。テーブルをスクリプト化し、DB 上に作成しました。
     そのため、 [myDbUser] .[myTable ]のような名前が付けられました。

アプリケーションを実行すると、無効なオブジェクト名 'dbo.myTable' という問題が常に発生します。
     

コードがまだ dbo テーブルを探しているようですが、存在しないため失敗します。

誰でもこの問題に光を当てることができますか? Entity Framework はこの dbo プレフィックスをどこから取得しますか?

ありがとう

4

3 に答える 3

17

スキーマを明示的に指定します。

[Table("Users", Schema = "dbo")]
public class User { .. }

または、ユーザーのデフォルトの db スキーマを指定します - 'dbo'

于 2011-06-05T19:33:01.787 に答える
0

私は最近この問題に遭遇しました。また、同じモデルでいくつかの異なるスキーマをサポートしています。私が基本的に思いついたのは、モデルをマップするクラス/メソッドにスキーマ名を渡すことでした。したがって、たとえば、EntityTypeConfigurationサブクラスはスキーマ名をコンストラクター引数として受け取り、ハードコードされた文字列とともに。に渡しますToTable()

詳細な説明については、こちらをご覧ください:https ://stackoverflow.com/a/14782001/243607

于 2013-02-08T22:04:16.310 に答える