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