我在使用Entity Framework读取表格数据时遇到了问题。
我的目标是通过Id
读取一行数据。
这是我的SQL表格定义:
CREATE TABLE [dbo].[Wares] (
[Ware_ID] INT IDENTITY (1, 1) NOT NULL,
[WareType_ID] INT NOT NULL,
[Model_ID] INT NOT NULL,
[Ware_Price] FLOAT (53) CONSTRAINT [DF_Wares_Ware_Price] DEFAULT ((0)) NOT NULL,
[Ware_Count] INT CONSTRAINT [DF_Wares_Ware_Count] DEFAULT ((0)) NOT NULL,
[Ware_Brand] NVARCHAR (30) CONSTRAINT [DF_Wares_Ware_Brand] DEFAULT (N'') NOT NULL,
[Ware_Image] VARCHAR (200) NULL,
CONSTRAINT [PK_Wares] PRIMARY KEY CLUSTERED ([Ware_ID] ASC),
CONSTRAINT [FK_Wares_WareTypes] FOREIGN KEY ([WareType_ID]) REFERENCES [dbo].[WareTypes] ([WareType_ID]) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT [FK_Wares_Models] FOREIGN KEY ([PhoneModel_ID]) REFERENCES [dbo].[Models] ([Model_ID]) ON DELETE CASCADE ON UPDATE CASCADE
);
这是我的类定义:
public class Ware
{
[Key]
public int Ware_ID { get; set; }
public int WareType_ID { get; set; }
public int PhoneModel_ID { get; set; }
public float Ware_Price { get; set; }
public int Ware_Count { get; set; }
public string Ware_Brand { get; set; }
public string Ware_Image { get; set; }
public virtual WareType WareType { get; set; }
}
我想从查询字符串中读取Id
,并使用它来选择行:
private Ware ThisWare()
{
string strid = Request.QueryString["id"];
int id = Convert.ToInt32(strid);
var context = EFDBContext.ReturnNewContext();
var query = from m in context.Wares where m.Ware_ID == id select m;
if (query.Count() == 1)
return query.First();
else return null;
}
我从这一行代码中收到了错误信息:
return query.First();
以下是错误描述:
有人知道如何修复这个问题吗?
'System.InvalidOperationException'异常在EntityFramework.dll中发生,但未在用户代码中处理
附加信息:无法将“Ware”上的“Ware_Price”属性设置为“System.Double”值。您必须将此属性设置为非空类型为“System.Single”的值。
附注:我已经尝试将
Ware_Price
更改为System.Single
类型,但仍然没有解决问题。
public double Ware_Price { get; set; }
- sstanfloat
和Single
是同一数据类型。将其更改为Single
只会再次产生原始错误。 - Cᴏʀʏ