从代码调用实体框架函数导入

entity-framework

所以我在我的数据库中定义了一个名为Spr_EventLogCreate的存储过程。我在我的数据模型中创建了一个函数import,名为LogEvent,没有返回类型,我可以在Model Browser树中看到这个函数

MyModel.edmx> MyModel> EntityContainer> Function Imports> LogEvent。

我想我应该能够在我的代码中调用函数,如下所示:

var context = new MyModelEntities();
context.LogEvent(...);

但LogEvent()方法不存在。

我必须在这里真的很蠢,但是如何调用我导入的函数?

使用VS 2008和EF 3.5。

一般承认的答案

在默认的Microsoft设计器中,无法生成调用函数的代码,而不是从设计时重新调整结果集。您可以编写在上下文类的部分定义中手动调用它的代码。这是一个例子:


        public void EmpDelete (global::System.Nullable PEMPNO, global::System.Nullable PDEPTNO)
        {
            if (this.Connection.State != System.Data.ConnectionState.Open)
              this.Connection.Open();
            System.Data.EntityClient.EntityCommand command = new System.Data.EntityClient.EntityCommand();
            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.CommandText = @"DataSourceModel1Entities.EmpDelete";
            command.Connection = (System.Data.EntityClient.EntityConnection)this.Connection;
            EntityParameter PEMPNOParameter = new EntityParameter("PEMPNO", System.Data.DbType.Decimal);
            if (PEMPNO.HasValue)
                PEMPNOParameter.Value = PEMPNO;
            command.Parameters.Add(PEMPNOParameter);
            EntityParameter PDEPTNOParameter = new EntityParameter("PDEPTNO", System.Data.DbType.Decimal);
            if (PDEPTNO.HasValue)
                PDEPTNOParameter.Value = PDEPTNO;
            command.Parameters.Add(PDEPTNOParameter);
            command.ExecuteNonQuery();
        }



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因