gpt4 book ai didi

c# - Entity Framework 从存储过程创建错误的模型

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:09 26 4
gpt4 key购买 nike

我有一个这样的存储过程“GET_PARTNER”:

SELECT
...
Partners.name AS 'name' -nvarchar
Partners.city AS 'city' -nvarchar
NULL AS 'sales' -money
NULL AS 'comments' -nvarchar
...

我已将 Entity Framework 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;}

最佳答案

默认情况下 NULLINT 数据类型。使用 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 DEMO

您还可以使用以下方法检查整个存储过程的元数据:

SELECT name, system_type_name
FROM sys.dm_exec_describe_first_result_set(N'EXEC GET_PARTNER params..', NULL, 0)

关于c# - Entity Framework 从存储过程创建错误的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45797386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com