相关疑难解决方法(0)

如何使用Entity Framework将存储过程的结果映射到具有不同命名参数的实体

我正在尝试使用Entity Framework创建一个基本示例来将SQL Server存储过程的输出映射到C#中的实体,但该实体具有不同(友好)的名称参数,而不是更隐蔽的名称.我也试图用Fluent(即非edmx)语法来做这件事.


什么有用......

存储过程返回名为:UT_ID,UT_LONG_NM,UT_STR_AD,UT_CITY_AD,UT_ST_AD,UT_ZIP_CD_AD,UT_CT的值

如果我创建这样的对象......

public class DBUnitEntity
{
    public Int16 UT_ID { get; set; }
    public string UT_LONG_NM { get; set; }
    public string UT_STR_AD { get; set; }
    public string UT_CITY_AD { get; set; }
    public string UT_ST_AD { get; set; }
    public Int32 UT_ZIP_CD_AD { get; set; }
    public string UT_CT { get; set; } 
}
Run Code Online (Sandbox Code Playgroud)

和像这样的EntityTypeConfiguration ......

public class DbUnitMapping: EntityTypeConfiguration<DBUnitEntity>
{
        public DbUnitMapping()
        {
            HasKey(t => t.UT_ID);
        }
}
Run Code Online (Sandbox Code Playgroud)

...我在DbContext的OnModelCreating中添加,然后我可以从数据库中获取实体,这很好,使用此....

var allUnits = _context.Database.SqlQuery<DBUnitEntity>(StoredProcedureHelper.GetAllUnitsProc); …
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-4 ef-code-first

23
推荐指数
1
解决办法
3万
查看次数

使用 EF Core 中返回的多个结果集映射存储过程

我目前正在将一个已经建立的网站从旧的 ASP.NET 迁移到 ASP.NET Core 2.2。该数据库是跨其他平台的共享数据库,也是建立的,因此我不能对其进行任何更改。

当我不得不从 EF Core 调用存储过程时,我遇到了这个问题,该存储过程返回 3 个结果集。存储过程的结果集是这样的。

表格1

ColumnName1 | ColumnName2 | SomeColumn | AndMoreColumns
------------+-------------+------------+---------------
Value1      | value 2     | value 3    | Value 4
Run Code Online (Sandbox Code Playgroud)

表格1

Column1    | Column2
-----------+----------
value1     | value 2
Run Code Online (Sandbox Code Playgroud)

表3

Column1
-------
Value1
Run Code Online (Sandbox Code Playgroud)

表 1 和表 2 相互关联。此表将始终返回表 1 上的 1 行,表 2 可以返回多行,而表 3 是静态的。

现在,我的问题是。如何将此结果集映射到 EF CoreQuery<T>模型构建器?我想按列名映射它,因为我想让列名更友好。我有一个不起作用的例子是这样的。

modelBuilder.Query<MyModel>(a => 
{
    a.Property(b=>b.ModelId).HasColumnName("ColumnName1");
    a.Property(b=>b.ModelName).HasColumnName("ColumnName2");
    ...
});
Run Code Online (Sandbox Code Playgroud)

但不幸的是,上述映射不起作用。特别是对于第二张桌子。

c# entity-framework-core asp.net-core

5
推荐指数
1
解决办法
7552
查看次数