【发布时间】:2021-09-19 08:12:15
【问题描述】:
我正在尝试将实体框架 (6.4.0) 包装在 SQL 视图 (SQL Server) 周围,其中几列的列名中有空格。例如,SQL 中的一列是“Badge ID”,当我将 EF 包裹在该视图周围时,它会将列重命名为“Badge_ID”
当我尝试查询时,EF 抛出数据读取器不兼容的异常(有道理):
System.Data.Entity.Core.EntityCommandExecutionException:数据 阅读器与指定的“Model.vwEmpOrg”不兼容。成员 的类型,'Badge_ID' 在 具有相同名称的数据读取器。'
我尝试了一种代码优先方法的解决方案,在类定义中,您可以像这样注释列名:
namespace EXAMPLE.Models
{
using System.ComponentModel.DataAnnotations.Schema;
public partial class vwEmpOrg
{
[Column("Badge ID")]
public string Badge_ID { get; set; }
但是同样的,仍然抛出异常。我错过了什么?为什么列名上的注解不起作用?
【问题讨论】:
-
请编辑您的问题并逐字添加您收到的确切错误。
-
另外,您是否尝试过在班级的列名周围添加方括号?
[Column("[Badge ID]")]我不确定这是否是有效的语法,但可能值得一试,看看它是否有效 -
另外,如果您查看由 EF (
vwEmpOrg.cs) 自动创建的类,那里的列是如何引用的? -
@devlincarnate 我尝试在类定义中添加方括号,这是个好主意,但不幸的是它没有用。
标签: sql-server entity-framework tsql model-view-controller view