【问题标题】:Using SQL Table valued parameter with Entity Framework将 SQL 表值参数与实体框架一起使用
【发布时间】:2013-10-23 15:21:30
【问题描述】:

我在我的项目中使用 Entity Framework v4.0 来连接数据库。我的情况是将 List 作为输入参数传递给存储过程并在 SP 中进行一些操作并返回 List 作为 SP 结果。我知道表值参数是一种选择。但经过一番调查,我发现在实体框架中无法使用表值参数。有没有其他不使用表值参数通过实体框架做的方法?

【问题讨论】:

标签: c# entity-framework entity-framework-4


【解决方案1】:

即使您使用实体框架,您仍然可以将 TVP 传递给存储过程。

例子:

// Create metadata records
IEnumerable<SqlDataRecord> sqlDataRecords = new List<SqlDataRecord>();

// Create a list of SqlDataRecord objects from your list of entities here

SqlConnection storeConnection = (SqlConnection)((EntityConnection)ObjectContext.Connection).StoreConnection;
try
{
    using (SqlCommand command = storeConnection.CreateCommand())
    {
        command.Connection = storeConnection;
        storeConnection.Open();

        SqlParameter[] sqlParameters = parameters.ToArray();
        command.CommandText = YourStoredProcedureName;
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.Add(new SqlParameter("YourTVPName", SqlDbType.Structured)
                            {
                                Value = sqlDataRecords,
                                TypeName = "dbo.Your_Table_Type"
                            });

        using (DbDataReader reader = command.ExecuteReader())
        {
            // Read results
        }
    }
}
finally
{
    storeConnection.Close();
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多