3

ええ、これらの質問のもう 1 つです。私はここを見ましたが、役に立ちませんでした..
これが私の状況です。
私は ASP サイトを開始し、最初は SQLce を使用していました。ホスティング事業者がサポートしていなかったため、これは悪いことが判明しました。Web Matrix メソッドを使用して、sdf ファイルを SQL Server 2012 db に変換しました。データベースはすべて良好で、すべてがデータを読み取ることができます。テーブルに何かを書き込もうとすると問題が発生します。IDENTITY_INSERT
が OFF に設定されている場合、テーブル 'Groups' の ID 列に明示的な値を挿入できません。
今..以前はすべてうまく機能していました。ここに私が設定した物語の例があります:

Column1: ID - Int - Primary key. - Identity specification yes, with a increment of 1  
Column2: GroupName - nvarchar(100) - just a normal text field  

それから。チョークするコードはどこにありますか:

        using (SLEntities context = new SLEntities())  
        {  
            var namecheck = (from n in context.Groups  
                             where n.GroupName == newname  
                             select n).Count();  

            if (namecheck > 0)  
            {  
                // the name already exists.. return  
                lab_Error.Text = newname + " is already in the database. Please use another name";  
                return;  
            }  

            // namecheck is new.. add to db  
            Group g = new Group();  
            g.GroupName = newname;  
            context.Groups.Add(g);  
            context.SaveChanges();  
        }  

savechanges() で終了します。
私の質問は、どうすればこれを修正できますか? (IDENTITY_INSERT ON を見ましたが、テーブルを作成するだけの場合はそうではありませんか?)..または、ID を使用して自動インクリメントする代わりに、別の方法は何ですか?

4

2 に答える 2

4

データモデルに移動し、ID 列の「StoreGeneratedPattern」プロパティが実質的に「Identity」に設定されていることを確認します。

于 2012-11-22T09:16:02.820 に答える
0

IDENTITY_INSERT を任意の列に配置した場合、DB でテーブルを作成するときに、コードからデータを挿入するときにその列に値を指定する必要はありません。

例えば ​​:-

CREATE TABLE dummy(id int identity(1,1), data varchar(100))

Insert into dummy values('First row')// it will work 

Insert into dummy values(1,'First row')// it will give error

より良い方法は、コード言及列名からデータを挿入することです

お気に入り

Insert into dummy(data) values('First row')

または、次のようにすることもできます (:-これにより、ID 列に値を挿入できます)

SET IDENTITY_INSERT dummy ON
INSERT INTO dummy(id, data) VALUES(3, 'garden shovel')

最初にこの記事を確認する必要があります:- http://msdn.microsoft.com/en-us/library/aa259221(v=sql.80).aspx

于 2012-11-22T09:16:37.413 に答える