Mike V Baker
Вы можете использовать такие вещи, как SqlDataAdapter, SqlCommand и SqlConnection для выполнения задач с базой данных SQL server (или MySql, если на то пошло). Если вы не используете EF, то вы берете на себя управление отношениями между связанными сущностями (свойства навигации). Эф использует некоторые из этих вещей для вас. Вот отрывок из программы, которую я написал очень давно (она была предназначена для веб-сервиса, но это всего лишь часть уровня доступа к данным, поэтому ее можно использовать для WinForms) Он выбирает один вопрос для викторины из пула вопросов.
public Question SelectDatabaseRecord(int nId)
{
Question entity;
SqlParamList lstParams;
DataTable dt;
DataSet ds;
DataRow dr;
lstParams = new SqlParamList();
lstParams.AddSqlParam("@Id", DbType.Int32, ParameterDirection.Input, nId);
ds = DataProvider.GetDataSet("spQuestionSelectById", lstParams);
dt = ds.Tables[0];
if (dt.Rows.Count > 0)
{
entity = new Question();
dr = dt.Rows[0];
Populate(ref entity, dr); // populate filled the properties of the entity from the DataRow
return entity;
}
return null;
}
// IN DataProvider
public static DataSet GetDataSet(string strProcName, List<SqlParameter> lstParams)
{
DataSet dsResult = new DataSet();
SqlConnection conn = GetConnection();
SqlDataAdapter da;
if (conn != null)
{
conn.Open();
da = new SqlDataAdapter(strProcName, conn);
da.SelectCommand = conn.CreateCommand();
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.CommandText = strProcName;
if (lstParams != null)
foreach (SqlParameter sqlParam in lstParams)
da.SelectCommand.Parameters.Add(sqlParam);
da.Fill(dsResult);
da.SelectCommand.Dispose();
conn.Close();
conn.Dispose();
}
return dsResult;
}