私はEF(v6.1)を初めて使用しています。 Code-Firstアプローチを使用しようとしています。
私は、SQLサーバー側(newsequentialid()
)で生成されるId列を持っていたいと思いますが、これらの値を上書きする機能があります。 マイコード:完璧なSQLになり手動で値を設定できるEF6.1 newsequentialid
[Key, Required, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
:
[Id] [uniqueidentifier] NOT NULL DEFAULT (newsequentialid())
しかしEFは単に私がId
プロパティに設定し、SQLにnullを渡す任意の値を無視します。基本的にフォローテストは機能しませんでした。
MyContext context = new MyContext();
MyClass item = new MyClass();
Guid id = Guid.NewGuid();
item.Id = id;
context.MyTable.Add(item);
context.MyTable.Create();
context.SaveChanges();
Assert.AreEqual(item.Id, id);
私はテストを行うために何をすべきですか?
"MyClass"(別名の下にある)を同じテーブルにマッピングする 'DbContext'サブクラスを' DatabaseGeneratedOption.Identity'なしで作成するだけです。このクラスは、例外的な場合に使用します。 –