首页 > 解决方案 > 是否可以使用 Fluent Entity Configuration 在 Entity Framework 中运行原始 SQL 查询?

问题描述

我正在使用 Entity Framework Code-First v 6.3.1 并尝试根据这篇文章运行原始 SQL 查询:

var result = context.ProcessStatuses.SqlQuery("SELECT * FROM ProcessStatus where Date_Modified=@datemodified", new SqlParameter("datemodified", processStatus.DateModified)).ToList();

但是,我得到了这个例外:

System.Data.Entity.Core.EntityCommandExecutionException: '数据读取器与指定的 'SqlUpgradeEFTests.ProcessStatusEntity' 不兼容。类型的成员“Uid”在数据读取器中没有同名的对应列。'

原因是我正在使用 Fluent Entity Configuration 并且我的 C# Entity 类属性名称与我的 DB 列名称不匹配。

上面的错误以“Uid”属性为例:

public partial class ProcessStatusEntity : ITriggerable
{
    public string Uid { get; set; }

流利的实体映射配置:

            Property(t => t.Uid)
            .HasColumnName("m_uid")
            .IsFixedLength()
            .HasMaxLength(20)
            .HasColumnOrder(0)
            .IsUnicode(false);

在我的表中定义为:

CREATE TABLE [dbo].[ProcessStatus](
[m_uid] [char](20) NOT NULL,

我在网上看到的所有示例都显示了 C# 实体属性名称和数据库列名称之间的完全匹配。是否可以以它考虑流畅实体映射的方式在 EF Code-First 中运行 RAW SQL 查询?

标签: c#sqlentity-framework-6

解决方案


推荐阅读