1

キーのための私のコラム

   this.Property(t => t.Guid).HasColumnName("Guid")
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

そしてインサート。

         context.TrafficImages.Add(new TrafficImage { Guid = guids[i] });
                context.SaveChanges();

保存すると、データベースは独自の GUID を書き込みます。とにかく、定義する場合は独自のGUIDを作成させ、そうでない場合はデータベースが作成するようにしますか?

4

1 に答える 1

0

DatabaseGenerationOption.Identity を指定すると、EF はプロパティを ID 列に基づくものとして扱います。この場合、プロパティを設定しても新しいエンティティを追加すると、値は無視され、Db によって生成されたものが使用されます。HasDatabaseGeneratedOption 構成を削除できますが、データベースがキーを生成する場合、EF がこの列に値を挿入しようとすると例外が発生します。データベースがキーを生成しない場合は、HadDatabaseGenerationOption 構成をまったく使用しないでください。また、データベースはエンティティを作成しないため、新しいエンティティを追加するときは常にクライアントでキー値を設定する必要があります。データベースが存在しない場合にキーを作成するときに、混合モードはないと思います。おそらく、そのためのストアド プロシージャを作成し、それを Create 操作にマップする必要があります。残念ながら、CodeFirst は、ストアド プロシージャを CUD 操作にマッピングすることをサポートしていません。

于 2012-10-18T02:08:03.997 に答える