我有一个存储过程"GET_PARTNER",如下所示:
SELECT
...
Partners.name AS 'name' -nvarchar
Partners.city AS 'city' -nvarchar
NULL AS 'sales' -money
NULL AS 'comments' -nvarchar
...
我已将实体框架 6 添加到项目中,并将其设置为从数据库创建模型,它创建了一个模型"GET_PARTNER_Result",如下所示:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WSExport.Model
{
using System;
public partial class GET_PARTNER_Result
{
public string name {get; set;}
public string city {get; set;}
public Nullable<int> sales {get; set;} -wrong datatype
public Nullable<int> comments {get; set;} -wrong datatype
}
}
如何修改存储过程,或者是否可以配置 ef 以便它使用正确的数据类型创建模型? 喜欢这个:
public Nullable<decimal> sales {get; set;}
public string comments {get; set;}
默认情况下NULL
INT
数据类型。使用CAST
:
SELECT
...
Partners.name AS name --nvarchar
,Partners.city AS city --nvarchar
,CAST(NULL AS MONEY) AS sales --money
,CAST(NULL AS NVARCHAR(1000)) AS comments --nvarchar
快速检查元数据:
SELECT name, system_type_name
FROM sys.dm_exec_describe_first_result_set(N'SELECT NULL AS c', NULL, 0)
Rextester 演示
您还可以使用以下方法检查整个商店过程的元数据:
SELECT name, system_type_name
FROM sys.dm_exec_describe_first_result_set(N'EXEC GET_PARTNER params..', NULL, 0)