列をDBでアイデンティティにマップします
-
25-09-2019 - |
質問
IDコラムをマークしましたが .Identity()
, 、生成されたデータベーススキーマにはありません IDENTITY
Trueに設定すると、レコードを追加するときに問題が発生します。データベーススキーマ(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を使用して統合テストのためにデータベースを構築および再構築するため、これを自動的に実行する必要があります...
編集:hm ...コメントで、これを実行するのに十分なコードを提供するように要求されたので、コードをコンソールアプリにカットアンドペストしました(すべてのクラスは必要ありません...)。 。私はどこかでいくつかの方法の呼び出しを忘れていたと思いますが、どこで理解することができませんでした。
他の誰かがそれを探している場合に備えて、この投稿への回答で作業ソリューションコードを投稿します。
解決
このコードを実行すると、問題が解決します。私はどこかで一歩を忘れていたに違いないと思うので、あなたが同じ問題を抱えているなら、あなたがこれらすべてをしていることを確認してください:
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();
所属していません StackOverflow