我正在使用DataSet(请不要问为什么)与Oracle数据提供者(Oracel.DataAccess.dll),我不喜欢一些生成的代码。有没有办法重写DataSet的代码生成器?
有没有办法来覆盖DataSet的代码生成器?如果我使用不同的数据提供者会怎么样?
我正在使用DataSet(请不要问为什么)与Oracle数据提供者(Oracel.DataAccess.dll),我不喜欢一些生成的代码。有没有办法重写DataSet的代码生成器?
有没有办法来覆盖DataSet的代码生成器?如果我使用不同的数据提供者会怎么样?
只要你使用的数据集,并不意味着代码生成,因为。那么你究竟在使用/做什么来生成代码?
dataProvider并不意味着生成代码。您可以直接访问您的数据并使用数据自行填充数据集。
例如
#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核心(这是我认为你正在使用的为好)。请注意,有两种方法
公告的数据集是如何被填充了数据数据库?
在这种情况下,我使用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;
}
}
我的博客上,有关于一个工具,我已经写了直接从存储生成代码的文章程序(我在这里展示的所有代码都是生成的代码)。该工具的源代码也是可用的,所以你可以修改生成的代码和你想要的任何东西。 Data Access Layer CodeGen
你可以写partial类和功能性添加自己的功能,你喜欢