1

ASP.Net ページで単純な (またはそう思われる) データバインディングと CRUD タイプの操作を実行する必要があります。FormView に接続された LinqDataSource を使用しています。挿入しようとしているテーブルには、これらのフィールドのデフォルトの制約があります。

[Created] [datetime] NOT NULL
[CreatedBy] [nvarchar](50) NOT NULL
[Modified] [datetime] NOT NULL
[ModifiedBy] [nvarchar](50) NOT NULL

ALTER TABLE [dbo].SolutionComponent ADD  CONSTRAINT [DF_SolutionComponent_Created]  DEFAULT (getdate()) FOR [Created];
ALTER TABLE [dbo].SolutionComponent ADD  CONSTRAINT [DF_SolutionComponent_CreatedBy]  DEFAULT (suser_sname()) FOR [CreatedBy];
ALTER TABLE [dbo].SolutionComponent ADD  CONSTRAINT [DF_SolutionComponent_Modified]  DEFAULT (getdate()) FOR [Modified];
ALTER TABLE [dbo].SolutionComponent ADD  CONSTRAINT [DF_SolutionComponent_ModifiedBy]  DEFAULT (suser_sname()) FOR [ModifiedBy];

挿入を行うと、これらのフィールドに何もバインドしていないにもかかわらず、Created および Modified に値を挿入しようとしているため、SQL Datetime オーバーフロー エラーが発生します。

私の質問は、LinqDataSource を取得して、insert ステートメントでこれらのフィールドを省略したり、少なくとも dbnull または null を指定して、データベース レベルのデフォルトが引き継がれるようにする方法を教えてください。

4

1 に答える 1

0

あなたの質問を正しく読んでいないかもしれませんが、制約で NULL 値が許可されていない場合は機能しません。

于 2010-10-11T17:46:01.827 に答える