栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

实体框架存储过程表值参数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实体框架存储过程表值参数

更新

我在Nuget软件包上添加了对此的支持-https:
//github.com/Fodsuk/EntityframeworkExtras#nuget
(EF4,EF5,EF6)

查看GitHub存储库以获取代码示例。


稍有疑问,但是对于尝试将用户定义的表传递到存储过程中的人来说,它仍然有用。在研究了Nick的示例和其他Stackoverflow帖子之后,我想到了:

class Program{    static void Main(string[] args)    {        var entities = new NewBusinessEntities();        var dt = new DataTable();        dt.Columns.Add("WarningCode");        dt.Columns.Add("StatusID");        dt.Columns.Add("DecisionID");        dt.Columns.Add("Criticality");        dt.Rows.Add("EO01", 9, 4, 0);        dt.Rows.Add("EO00", 9, 4, 0);        dt.Rows.Add("EO02", 9, 4, 0);        var caseId = new SqlParameter("caseid", SqlDbType.Int);        caseId.Value = 1;        var userId = new SqlParameter("userid", SqlDbType.UniqueIdentifier);        userId.Value = Guid.Parse("846454D9-DE72-4EF4-ABE2-16EC3710EA0F");        var warnings = new SqlParameter("warnings", SqlDbType.Structured);        warnings.Value= dt;        warnings.TypeName = "dbo.udt_Warnings";        entities.ExecuteStoredProcedure("usp_RaiseWarnings_rs", userId, warnings, caseId);    }}public static class ObjectContextExt{    public static void ExecuteStoredProcedure(this ObjectContext context, string storedProcName, params object[] parameters)    {        string command = "EXEC " + storedProcName + " @caseid, @userid, @warnings";        context.ExecuteStoreCommand(command, parameters);    }}

存储过程如下所示:

ALTER PROCEDURE [dbo].[usp_RaiseWarnings_rs]    (@CaseID int,      @UserID uniqueidentifier = '846454D9-DE72-4EF4-ABE2-16EC3710EA0F', --Admin     @Warnings dbo.udt_Warnings READONLY)AS

用户定义的表如下所示:

CREATE TYPE [dbo].[udt_Warnings] AS TABLE(    [WarningCode] [nvarchar](5) NULL,    [StatusID] [int] NULL,    [DecisionID] [int] NULL,    [Criticality] [int] NULL DEFAULT ((0)))

我发现的约束包括:

  1. 传入的参数
    ExecuteStoreCommand
    必须与存储过程中的参数一致
  2. 您必须将每一列传递到用户定义的表中,即使它们具有默认值也是如此。所以看来我的UDT上没有IDENTITY(1,1)NOT NULL列


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433026.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号