Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有方法重写数据集的代码生成器?_C#_Oracle_Visual Studio 2010_Code Generation - Fatal编程技术网

C# 是否有方法重写数据集的代码生成器?

C# 是否有方法重写数据集的代码生成器?,c#,oracle,visual-studio-2010,code-generation,C#,Oracle,Visual Studio 2010,Code Generation,我正在使用Oracle数据提供程序(Oracel.DataAccess.dll)的数据集(请不要问为什么),我不喜欢生成代码中的一些数据集 是否有方法重写数据集的代码生成器?如果我使用不同的数据提供程序会怎么样?您可以编写类并添加自己喜欢的函数,因为您使用的数据集并不意味着代码生成。那么,您究竟在使用/做什么来生成代码呢 数据提供者也并不意味着生成了代码。您可以直接访问数据,自己用数据填充数据集 比如说 #region GetPostsFeatured internal DbDataReade

我正在使用Oracle数据提供程序(Oracel.DataAccess.dll)的数据集(请不要问为什么),我不喜欢生成代码中的一些数据集


是否有方法重写数据集的代码生成器?如果我使用不同的数据提供程序会怎么样?

您可以编写类并添加自己喜欢的函数,因为您使用的数据集并不意味着代码生成。那么,您究竟在使用/做什么来生成代码呢

数据提供者也并不意味着生成了代码。您可以直接访问数据,自己用数据填充数据集

比如说

#region GetPostsFeatured

internal DbDataReader GetPostsFeatured()
{
  using (var command = CreateCommandForGetPostsFeatured())
  {
    DbConnection.Open();
    return command.ExecuteReader(CommandBehavior.CloseConnection);
  }
}

internal DataSet GetPostsFeaturedDataSet()
{
  var adapter = DbProviderFactory.CreateDataAdapter();
  adapter.SelectCommand = CreateCommandForGetPostsFeatured();
  var ds = new DataSet();
  adapter.Fill(ds);
  return ds;
}

private DbCommand CreateCommandForGetPostsFeatured()
{
  var command = DbConnection.CreateCommand();
  command.CommandType = CommandType.StoredProcedure;
  command.CommandText = "GetPostsFeatured";
  var parameter = DbProviderFactory.CreateParameter();
  parameter.DbType = DbType.Int32;
  parameter.Direction = ParameterDirection.ReturnValue;
  parameter.ParameterName = "@RETURN";
  command.Parameters.Add(parameter);
  return command;
}

#endregion GetPostsFeatured
上面的代码使用ADO.NET内核(我认为您也在使用它)。请注意,有两种方法

  • GetPostsFeatured()-返回 DbDataReader
  • GetPostsFeaturedDataSet()-哪个 返回一个数据集
  • 注意数据集是如何用数据库中的数据填充的吗

    在本例中,我使用的是MS SQL数据提供程序,但它可以是任何数据提供程序。它们都支持一组通用的功能

    下面显示了使用配置文件的connectionstring部分并实例化连接等的代码

      internal partial class DataModule
      {
        private DbProviderFactory DbProviderFactory { get; set; }
        private DbConnection DbConnection { get; set; }
    
        public DataModule()
        {
          var connectionStringSettings = ConfigurationManager.ConnectionStrings["Orion"];
          DbProviderFactory = DbProviderFactories.GetFactory(connectionStringSettings.ProviderName);
          DbConnection = DbProviderFactory.CreateConnection();
          DbConnection.ConnectionString = connectionStringSettings.ConnectionString;
        }
      }
    
    在我的博客上,有一篇文章介绍了我编写的一个直接从存储过程生成代码的工具(我在这里向您展示的所有代码都是生成的代码)。该工具的源代码也可用,因此您可以修改生成的代码和任何其他您想要的内容。