我有一个简单的模型
[Table("InterfaceType")]
public class InterfaceType
{
[Key]
public int InterfaceTypeId { get; set; }
public string Description { get; set; }
}
在我的 DbContext
public DbSet<InterfaceType> InterfaceTypes { get; set; }
在我的控制器中
List<InterfaceType> types = _context.InterfaceTypes.FromSql(
"SELECT * FROM [Interfaces].[Control].[InterfaceType]").ToList();
哪个返回错误:
InvalidOperationException:“FromSql”操作的结果中不存在所需的列“InterfaceID”。
我在与此类似的其他方法中使用 FromSql 没有问题,尽管这些模型确实包含 InterfaceId。为什么此操作在模型中不存在时需要一个 InterfaceId。我也尝试了以下相同的结果。
List<InterfaceType> types = _context.InterfaceTypes.FromSql(
"SELECT InterfaceTypeId, Description FROM [Interfaces].[Control].[InterfaceType]").ToList();
我也试过:
interfacesOverview.SelectedInterface.InterfaceTypes = _context.InterfaceTypes.ToList();
通过 fluent api 声明后:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<InterfaceType>().ToTable("InterfaceType", "Control");
}
结果相同。
为了清楚起见,这里是 MSSQL 中的表:
CREATE TABLE [Control].[InterfaceType](
[InterfaceTypeId] [tinyint] NOT NULL,
[Description] [varchar](25) NULL,
CONSTRAINT [PK_InterfaceType] PRIMARY KEY CLUSTERED
(
[InterfaceTypeId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
更新
我查看了 EF 生成的 SQL:
SELECT [i].[InterfaceTypeId], [i].[Description], [i].[InterfaceID] FROM [Control].[InterfaceType] AS [i]
它从哪里获取 InterfaceID?
慕神8447489
阿波罗的战车
哈士奇WWW
相关分类