gpt4 book ai didi

entity-framework-core - EF Core - 从原始 SQL 填充未映射的列?

转载 作者:行者123 更新时间:2023-12-04 13:36:09 26 4
gpt4 key购买 nike

我有一个查询,我正在对特定连接/列进行计数 - 如果我在删除“Clicks”[NotMapped] 属性的情况下运行此代码,所有值都会正确填充 - 但由于“Clicks”不是,因此插入失败一个有效的列名。当我将该列标记为 [NotMapped] 时,它不会从该语句中填充。 如何使用原始 SQL 并填充 [NotMapped] 列?

代码:

var query = db.URLs.FromSqlRaw(
@"SELECT [u].[Key], [u].[Url], COUNT(c.Id) AS [Clicks]
FROM[URLs] AS[u]
LEFT JOIN[Clicks] AS[c] ON[u].[Key] = [c].[ShortUrlKey]
GROUP BY[u].[Key], [u].[Url]")
.AsQueryable<ShortURL>();

var urls = query.ToList();

模型(适用于插入,但不填充 Clicks 属性):
public class ShortURL
{
public string Key { get; set; }
public string Url { get; set; }

[NotMapped()]
public int Clicks { get; set; } // doesn't populate from raw query
}

模型(适用于查询,但在插入时失败)
    public class ShortURL
{
public string Key { get; set; }
public string Url { get; set; }
public int Clicks { get; set; } // not in DB
}

最佳答案

这不是最好的方法,但可以用来解决您的问题:

  • 在您的 DBContext 列表中创建一个新的 DbSet:public DbSet<YourMode> actual_table_name { get; set; }public DbSet<CopyWithUnmappedModel> arbitary_table_name { get; set; }
  • 复制 YourModel 下的整个 YourModel 并给它任何你想要的名字 (CopyWithUnmappedModel)
  • 移除所有 NotMapped 字段并将它们放置在具有 NotMapped 属性的任意模型中
  • 使用 arbitary_table_name 而不是 实际表名您只想阅读日期的地方。由于您没有写入表格,因此表格的名称无关紧要。并使用第一个 实际表名用于写作。
  • 关于entity-framework-core - EF Core - 从原始 SQL 填充未映射的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61917115/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com