循环遍历模型并构建SqlCommand obj

时间:2013-03-11 16:09:06

标签: asp.net-mvc-3 loops model ado.net

我有一个MVC3应用程序,我想将我的模型传递给构建命令对象的方法。原因是我有很多方法与命令对象,我希望代码更好地编写。

private static SqlCommand CommandObj(vw_UserManager_Model model)
{
    SqlCommand command = new SqlCommand();
    command.CommandType = CommandType.StoredProcedure;   


    foreach (var item in model)
    {
        switch (property.PropertyType.Name)
        {
            case "String":
                command.Parameters.Add("@" + property.Name, SqlDbType.VarChar).SqlValue = property;
                break;
            case "Guid":
                command.Parameters.Add("@" + property.Name, SqlDbType.UniqueIdentifier).SqlValue = property;
                break;
            case "Int32":
                command.Parameters.Add("@" + property.Name, SqlDbType.Int).SqlValue = property;
                break;
            case "Boolean":
                //switch (property.Name.FirstOrDefault())
                //{
                //    case true:
                //        command.Parameters.Add("@isactive", SqlDbType.Bit).SqlValue = 1;
                //        command.Parameters.Add("@isapproved", SqlDbType.Bit).SqlValue = 1;
                //        break;
                //    case false:
                //        command.Parameters.Add("@isactive", SqlDbType.Bit).SqlValue = 0;
                //        command.Parameters.Add("@isapproved", SqlDbType.Bit).SqlValue = 0;
                //        break;
                //}
                break;
        }
    }

    return command;
}

目前这段代码无法编译,因为我无法像这样通过我的模型进行枚举。我想要做的是循环遍历模型中的每个项目并执行switch语句以构建正确的dbType参数。

有人建议如何更改此代码吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

希望我理解你的问题。好像你可能正试图做这样的事情。这是我的模特课:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
    public bool Married { get; set; }
}

这是遍历模型属性的代码:

public static void Main(string[] args)
{
    Person person = new Person();
    var modelProperties = person.GetType().GetProperties();

    foreach (var property in modelProperties)
    {
        switch (property.PropertyType.Name)
        {
            case "String":
                Console.WriteLine("Property {0} is a string", property.Name);
                break;
            case "Int32":
                Console.WriteLine("Property {0} is an int", property.Name);
                break;
            case "Boolean":
                Console.WriteLine("Property {0} is a boolean", property.Name);
                break;
            default:
                Console.WriteLine("Type unknown!");
                break;
        }
    }

希望这有帮助。