是否有一种优雅的方式来编写一个insert语句,它有很多参数?我有20个需要保存在DB中的标志,以及需要插入的其他信息以及这20个标志。为该插入编写一个包含30个参数的方法是浪费时间,但到目前为止,我还没有提出其他想法,这可能有用。
答案 0 :(得分:6)
您可以将所有这些参数放在一个对象中,并将该对象传递给该方法。
答案 1 :(得分:3)
标准方法是创建一个表示您的实体的类,然后传递该类的实例。
这使得传递给可能进行验证,演示等以及持久性的其他方法变得容易。
答案 2 :(得分:1)
同意Sachin,封装一个类中需要的SqlParameters列表
然后将实例传递给数据层以进一步处理SQL查询。
答案 3 :(得分:1)
您可以创建一个表示可插入数据库的对象类型的接口,例如公开getFields等方法的Iinsertable。这样,您就可以创建实现此接口的实体。
使用这些实体,在数据库层中,您可以创建一个接受Iinsertable作为参数的泛型方法,您可以在循环中查询要使用getFiels方法插入的所有字段。这将使您的代码可以重用于每种类型的实体,并且它将是干净的。
答案 4 :(得分:0)
使用我的SqlBuilder类。它允许您编写参数化的查询,而无需担心创建参数或他们所调用的内容。
var bldr = new SqlBuilder( myCommand );
bldr.Append("SELECT * FROM CUSTOMERS WHERE ID = ").Value(myId, SqlDbType.Int);
//or
bldr.Append("SELECT * FROM CUSTOMERS NAME LIKE ").FuzzyValue(myName, SqlDbType.NVarChar);
你可以拥有任意数量的旗帜。每次要在查询中包含运行时值时,只需调用Value()。隐藏了参数的创建,您只需留下一个简洁的SQL查询。
SqlBuilder类的代码是here