1

ID列にをマークしましたが.Identity()、生成されたデータベーススキーマがtrueに設定されていないためIDENTITY、レコードを追加するときに問題が発生します。(SQL Management Studioで)データベーススキーマを手動で編集してId列にマークを付けるとIDENTITY、すべてが希望どおりに機能します。EFにそれを単独で実行させることはできません。

これは私の完全なマッピングです:

public class EntryConfiguration : EntityConfiguration<Entry>
{
    public EntryConfiguration()
    {
        Property(e => e.Id).IsIdentity();
        Property(e => e.Amount);
        Property(e => e.Description).IsRequired();
        Property(e => e.TransactionDate);

        Relationship(e => (ICollection<Tag>)e.Tags).FromProperty(t => t.Entries);
    }
}

EFを使用して統合テスト用のデータベースを構築および再構築しているので、これを自動的に実行する必要があります...

編集: うーん...コメントで、これを実行するのに十分なコードを提供するように要求されたので、コードをコンソールアプリにカットアンドペーストして(すべてのクラスが必要になるわけではありません...)、突然それを実行しましたちょうど働いた。どこにあるのかわからなかったのですが、どこかでメソッド呼び出しを忘れていたのではないでしょうか。

他の誰かが探しに来た場合に備えて、この投稿への回答で実用的なソリューションコードを投稿します。

4

1 に答える 1

1

このコードを実行すると、問題が解決します。どこかで一歩を忘れたに違いないので、同じ問題が発生した場合は、次のすべてのことを実行してください。

var connection = GetUnOpenedSqlConnection();       // Any connection that inherits
                                                   // from DbConnection is fine.

var builder = new ContextBuilder<ObjectContext>(); // I actually had my own class
                                                   // that inherits from 
                                                   // ObjectContext, but that was 
                                                   // not the issue (I checked).

builder.Configurations.Add(EntryConfiguration);    // EntryConfiguration is the 
                                                   // class in the question

var context = builder.Create(connection);

if (context.DatabaseExists())
{ context.DeleteDatabase(); }

context.CreateDatabase();
于 2010-04-09T18:22:08.153 に答える