作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 EF 6.0 开发 .NET 项目。
** 请注意数据库已经存在,无法通过代码更改**
我正在使用枚举,这是我的代码:
[Table("T_PRODUCTS")]
public class basket
{
[Key]
public int productID{get;set;}
public string productName {get;set;}
public EProductType productType {get;set;}
}
public enum EProductType
{
typeA = 0,
typeB = 1,
}
以及我的表在 SQL Server 中的定义:
CREATE TABLE [dbo].[T_PRODUCTS](
[productID] [int] NOT NULL,
[productName] [varchar](100) NULL,
[productType] [smallint] NULL,
CONSTRAINT [PK_T_PRODUCTS] PRIMARY KEY CLUSTERED
(
[productID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
在运行单元测试时,数据已成功保存在数据库中! ;)
但是,当我使用我的 web api 时:
public class ProductController : ApiController
{
public HttpResponseMessage Get( int id )
{
var Product= Products.GetById( id );
if ( Product == null )
{
return Request.CreateResponse( HttpStatusCode.NotFound );
}
return Request.CreateResponse( HttpStatusCode.OK, Product );
}
}
我有这个错误信息:
<Error><Message>An error as occured.</Message><ExceptionMessage>Property 'productType' on 'Product' could not be set to 'System.Int16'. You must assign a non null value of type 'EProductType' to this property. </ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
如果我像这样更改我的枚举:
public enum EProductType : ushort
{
typeA = 0,
typeB = 1,
}
它将无误地返回我的产品。
但是,字段“productType”始终设置为 0(零)。然后,所有使用 EF 保存的新产品在“productType”字段中都为 NULL...
如何将枚举与 EF 和 Web api 一起使用?
感谢您的回复。
最佳答案
这是简单的类型不匹配,一般没什么问题。
您的 [productType]
列的类型为 smallint
(16 位)。因此,您也必须在 C# 中使用 16 位整数(short
或 ushort
)。在 C# 中未显式派生自整数类型的枚举默认为 int
(32 位)类型。
关于c# - 错误消息将使用带有 EF 和 Web API 的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20546697/
我是一名优秀的程序员,十分优秀!