Повторите выражение Linq и преобразуйте его в sqlparameter

#c# #.net #linq

#c# #.net #linq

Вопрос:

поскольку карта может быть написана кодом, приведенным ниже, с помощью Enterlib 5.0,

 .Map(p => p.ID).ToColumn("ID").Map(p => p.Version).ToColumn("ver")
  

Теперь я хочу, чтобы AddInParameter имел ту же функцию,
Возьмем объект базы данных для примера, см.

 Database db=DatabaseManager.Create();
db.GetStoredProcCommand(“Stored procedure Name”);
  

Итак, я хочу инкапсулировать конструктор с параметрами, подобными этому,

 db.SetParamter("@Parameter1",value).SetParamter("@Parameter2",2)
                                   .SetParamter("@Parameter3",3).Build();
  

После установки параметров db мы можем выполнить команду «db.ExecuteNonQuery();»

Как я могу использовать «Выражение>» и преобразовать его в SqlParameter?

Спасибо…

Ответ №1:

Методы расширения на помощь!

(Предполагая, что вы используете ADO.NET SqlClient)

 public static class Extensions
{
    public static Database SetParameter(this Database db, string name, object value)
    {
        if (db == null) throw new ArgumentNullException();

        DbCommand command = db.CurrentCommand; // or whatever
        command.Parameters.AddWithValue(name, value);

        return db;
    }
}