EF Code First是否有这种Translate <t>方法?</t>

时间:2011-12-08 19:49:30

标签: .net entity-framework ef-code-first

我还没有在任何地方看到它,但我想知道Code First是否实现了here描述的Translate方法。我目前正在使用EFExtensions项目中使用的Materialize方法(修改后与Code First一起使用),但我认为这种方法有以下好处:

  • 可能知道如何处理基于映射的复杂类型,而不是根据属性名称做出假设。
  • 可能会返回对象代理,而不是指定的实际T

有没有人对这种方法有足够的了解来评论我的假设,有没有人知道这是否适用于Code First?

1 个答案:

答案 0 :(得分:2)

试过了。这个例子在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
  • 返回的对象属于代理类型。