Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 简洁的对象加上下文_C#_Dapper - Fatal编程技术网

C# 简洁的对象加上下文

C# 简洁的对象加上下文,c#,dapper,C#,Dapper,代码: 目前我正在做: class ComplicatedObject { public int? TaskTypeId { get; set; } public int?[] CountTypeIds { get; set; } public int?[] EquipmentTypeIds { get; set; } public int? TaskBlockId { get; set; }

代码:

目前我正在做:

   class ComplicatedObject {
            public int? TaskTypeId { get; set; }
            public int?[] CountTypeIds { get; set; }
            public int?[] EquipmentTypeIds { get; set; }
            public int? TaskBlockId { get; set; }
            public int? TeamId { get; set; }
            public string DriverId { get; set; }
            public int? TaskStatusId { get; set; }
            public string EventType { get; set; }
            public DateTime? StartDate { get; set; }
            public DateTime? EndDate { get; set; }
            public string County { get; set; }
            public string Tag { get; set; }
    }
dapper得到的对象基本上就是Id加上复杂的对象

我想做一些像

            var param = new
            {
                Id = id,
                TaskTypeId = complicatedObjectInstance.TaskTypeId,
                CountTypeIds = complicatedObjectInstance.CountTypeIds,
                EquipmentTypeIds = complicatedObjectInstance.EquipmentTypeIds,
                TaskBlockId = complicatedObjectInstance.TaskBlockId,
                TeamId = complicatedObjectInstance.TeamId,
                DriverId = complicatedObjectInstance.DriverId,
                TaskStatusId = complicatedObjectInstance.TaskStatusId,
                EventType = complicatedObjectInstance.EventType,
                StartDate = complicatedObjectInstance.StartDate,
                EndDate = complicatedObjectInstance.EndDate,
                County = complicatedObjectInstance.County,
                Tags = complicatedObjectInstance.Tag
            };
    ExecuteQuery(sql, params)

您可以将对象转换为字典,然后向其中添加其他道具

ExecuteQuery(sql, new { Id = id, complicatedObjectInstance})
公共静态类ObjectExtensions
{
公共静态IDictionary ToDictionary(此对象值)
{
返回TypeDescriptor.GetProperties(value.GetType()).Cast().ToDictionary(property=>property.Name,property=>property.GetValue(value));
}
}
[测试]
公共void TestDictionary()
{
var param=newtestclass{Bar=“Bar”,Foo=“Foo”}.ToDictionary();
参数添加(“Id”,99);
使用(
var conn=new SqlConnection(@“数据源=。\sqlexpress;集成安全性=true;初始目录=foo”))
{
var result=conn.Query(“选择Foo=@Foo,Id=@Id”,param).First();
Assert.That(result.Id,Is.EqualTo(99));
}
}
public static class ObjectExtensions
{
    public static IDictionary<string, object> ToDictionary(this object value)
    {
        return TypeDescriptor.GetProperties(value.GetType()).Cast<PropertyDescriptor>().ToDictionary(property => property.Name, property => property.GetValue(value));
    }
}

[Test]
public void TestDictionary()
{
    var param = new TestClass { Bar = "Bar", Foo = "Foo" }.ToDictionary();
    param.Add("Id", 99);

    using (
        var conn = new SqlConnection(@"Data Source=.\sqlexpress;Integrated Security=true; Initial Catalog=foo"))
    {
        var result = conn.Query("select Foo = @Foo, Id = @Id", param).First();
        Assert.That(result.Id, Is.EqualTo(99));
    }
}