有人可以幫我解決這個例外:實體框架 - 「無法創建類型的常數值...」異常
試驗方法 KravmagaTests.Model.Entities.StudentTest.Create_Valid_Student拋出 例外: System.NotSupportedException:無法創建類型爲'Kravmaga.Models.Account'的常量 值。在此上下文中僅支持基本類型(如'Int32,String和Guid'等 )。
我得到這個,當我運行這個測試方法:
[TestMethod]
public void Create_Valid_Student()
{
Student student = new Student()
{
Username = "username",
Firstname = "firstname",
Surname = "surname",
Email = "[email protected]",
Password = "password",
};
KravmagaContext context = new KravmagaContext();
context.AddToAccounts(student);
context.Save();
bool exists = context.Accounts.Contains(student); // THIS THROWS EXCEPTION
Assert.IsTrue(exists);
}
非常感謝。
// ...
context.Save();
int newStudentId = student.Id;
// because the Id generated by the DB is available after SaveChanges
bool exists = context.Accounts.Any(a => a.Id == newStudentId);
Assert.IsTrue(exists);
Contains
因爲它檢查如果一個特定的對象實例是在context.Accounts
集不會在這裏工作:
謝謝,這真的可以幫助我瞭解什麼是錯的。 –
@ Ikkuda:順便說一句,你在那裏測試什麼? 'context'是一個圍繞ObjectContext的自寫包裝器,還是直接派生的ObjectContext?在後一種情況下,您不是測試*您的*代碼,而是實體框架本身。如果'exists'永遠是'false',並且在到達'Assert'之前你沒有從EF得到異常,那麼EF就會有一個可怕的錯誤。 – Slauma
謝謝!在Linq和Objects以及EF之間的這些小小的區別可以成爲真正的熊。 – krillgar