テーブルの主キーとしてGUIDを使用するデータベースを使用する動的データエンティティWebアプリケーションがあります。すべてのGUIDフィールドのデフォルト値はNEWID()に設定されているため、SQLServerはすべてのレコードに対して新しいGUIDを生成します。ただし、私の動的データWebサイトでは、新しいエントリの挿入ページにGUIDフィールドが表示され、ユーザーがデータを入力することが期待されています。フィールドが表示されないようにするにはどうすればよいですか?
2 に答える
MSDNによると:
「Scaffold 属性を使用してその値を false に設定することにより、他の列と同じように主キーを非表示にすることができます。自動的に生成されたキーは認識されないため、デフォルトの挿入ページ テンプレートは、自動主キーを持つテーブルの EDM では機能しません。エンティティの部分クラスを作成し、Scaffold 属性に false の値を適用しない限り、."
また、余談ですが、SQL Server 2005 以降を使用している場合は、Guid の既定値に "newsequentialid()" を使用することをお勧めします。これは、挿入がより効率的であるためです。
正しい答えではありません..
私が行ったこれを行った後、すべてゼロの GUID を取得する 1 つのレコードを挿入できます。その後、エラー メッセージはまったく表示されませんが、GUID (もちろん主キー) の一意のインデックス制約のため、それ以上レコードを挿入することはできません。
この問題を本当に解決するには、emdx ファイルを編集して、
StoreGeneratedPattern="Identity"
「SSDLコンテンツ」コメントの下のGuidプロパティタグに。例:
<Property Name="Guid" Type="uniqueidentifier" Nullable="false" StoreGeneratedPattern="Identity"/>
ビジュアルスタジオ内のデザイナーでこれを行うと、「CSDLコンテンツ」コメントの下のプロパティタグに注釈が付けられますが、機能しません..
Entity Framework 4.0 Visual studio 10 および .NET Framework 4.0 を使用