Есть ли в EF Code First метод Translate <T>? - PullRequest
0 голосов
/ 08 декабря 2011

Я нигде этого не видел, но мне интересно, есть ли в Code First реализация метода Translate, описанного здесь .В настоящее время я использую метод Materialize, используемый в проекте EFExtensions (модифицированный для использования с Code First), но я предполагаю, что этот метод имеет следующие преимущества:

  • Вероятно, знает, что делать со сложными типами на основесопоставления вместо предположений об именах свойств.
  • Возможно, возвращает прокси объекта вместо фактического указанного T.

Кто-нибудь знает достаточно об этом методе, чтобы комментировать мойпредположения, и кто-нибудь знает, если это доступно с Code First?

1 Ответ

2 голосов
/ 09 декабря 2011

Только что попробовал. Этот пример находится в C #

using(YourDbContext ctx = new YourDbContext()) {
  ObjectContext x = ((IObjectContextAdapter)ctx).ObjectContext;

  var conn = ctx.Database.Connection;

  conn.Open();

  using (IDbCommand cmd = conn.CreateCommand())
  {
    cmd.CommandText = "select * from YourType_Table";
    using (DbDataReader reader = (DbDataReader)cmd.ExecuteReader())
    {
      YourType[] result = x.Translate<YourType>(reader).ToArray();
      Console.WriteLine(result.Length);
    }
  }
}

По вашим вопросам:

  • Поддерживаются только примитивные типы. Для сложных типов это бросает InvalidOperationException.
  • Возвращаемые объекты относятся к прокси-типу.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...