質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

5431閲覧

DisplayName属性の設定について

hiyokoya

総合スコア13

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

1クリップ

投稿2019/02/23 00:05

前提・実現したいこと

ASP.NET MVC5 & VB.NET でWebアプリを作成しています。
Oracleの既存テーブルを使ってDBファーストで作成するつもりです。
モデルクラスのプロパティにDisplayName属性を付けて、ViewスクリプトのDisplayNameForメソッドで属性値を自動的に表示できるようにしたいです。

発生している問題・エラーメッセージ

モデルクラスの各プロパティにDisplayName属性を付けて属性値に全角を指定するとデバック実行した時にエラーで落ちてしまいます。エラーにならない場合もありますが、文字化けします。

試したこと

モデルフォルダに対してADO.NET Entity Data Model を追加する時に、「データベースからEF Designer」を選ぶとDisplayNameForメソッドは無事実行されますが、「データベースからCode First」を選ぶとエラーになります。

補足情報(FW/ツールのバージョンなど)

VS2015 Pro 、VS2015 Communityで同じ現象が起きています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Oracleの既存テーブルを使ってDBファーストで作成するつもりです。

Oracle のデザイナは不明ですが、SQL Server と同じであろうと想像してレスします。

モデルフォルダに対してADO.NET Entity Data Model を追加する時に、「データベースからEF Designer」を選ぶとDisplayNameForメソッドは無事実行されますが、「データベースからCode First」を選ぶとエラーになります。

何故後者でエラーになるのか不明ですが、DB ファーストであれば前者「データベースからEF Designer」を使ってください

後者は、既存の DB をベースに EF Code First の機能を使って新たに別の DB を生成するためのモデルを作るもので、質問者さんのケース「Oracleの既存テーブルを使ってDBファースト」には使いません。

(何かの本に、DB ファーストでも「データベースからCode First」で作って使えるということが書いてあるそうですが、少なくとも SQL Server の場合は間違いです)

で、それに NameAttribute, RequiredAttribute などのデータアノテーション属性を付与するのが今回の質問のメインの課題だと理解しています。

「データベースからEF Designer」を使って自動生成された Entity Data Model (EDM) に手を加えるのは NG です。

EDM とは別の場所にクラスファイルを追加してそれに属性を付与します。具体的には以下の記事のようにしてください。

EDM にデータアノテーション属性を付与
http://surferonwww.info/BlogEngine/post/2017/05/21/how-to-add-dataannotation-attributes-to-edm-generated-by-visual-studio.aspx

投稿2019/02/23 00:53

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiyokoya

2019/02/24 03:52

解決しました! ご回答の通り、 1.「データベースからEF Designer」からモデルを作成する。 2.モデルクラスに対応したPartialクラスを作成する。 3.Partialクラス上で属性を設定する。 でいけました。 「データベースからCode First」との利用シーンの違いも把握していなかったので助かりました。 因みに「データベースからCode First」から作成したモデルにDisplayName属性を付けると、属性値によって実行時エラーが起きていましたが、DataType属性は正常に機能していました。いずれにせよ正攻法ではなさそうなので、気にしないことにします。 有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問