【问题标题】:Return Extra Columns in GetRawSQL with Entity Framework使用实体框架返回 GetRawSQL 中的额外列
【发布时间】:2021-02-20 22:46:30
【问题描述】:

是否可以使用FromSqlRaw 在实体框架中返回额外的动态列?

基本概念是这样的

var contacts = DbContext.Contacts.FromSqlRaw("Select *, 'Some Dyn Field' as Field1 From Contacts ");

我怎样才能访问Field1?我正在尝试解决一个更复杂的过程,但这是一个一般概念。

【问题讨论】:

  • 不是直接的,尽管这可能与您想要做的事情一致:stackoverflow.com/questions/26749429/… 您的示例不起作用,因为要返回“联系人”,“某些动态字段”将具有被识别为联系人实体的一部分。

标签: .net entity-framework .net-core entity-framework-core


【解决方案1】:

查询 DbContext.Contacts.FromSqlRaw("Select *, 'Some Dyn Field' as Field1 From Contacts ") 的字段应包含与您的 EF 的 DbContext 的 Contact 类相同的字段,否则您将遇到运行时错误。如果您不想有一些额外的字段,您可以创建一个新类 - MyExtraField 类并将此类添加到 EF 的上下文中

public virtual DbSet<MyExtraField> MyExtraFields { get; set; }

.............

  modelBuilder.Entity<MyExtraField>(e =>
            {
                e.HasNoKey();
            });
.....

如果它不符合您的要求,您可以尝试使用旧的 ADO.NET。

【讨论】:

  • 是的,这些是动态的,并且在运行时定义,所以你真的不能有一个类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多