2017-10-10 2 views
2

코드 : 단정 한 객체 플러스 컨텍스트

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; } 
    } 

은 현재 내가 뭐하는 거지 : 말끔 해가지고있는 개체는 기본적으로 단지 아이디와 ComplicatedObject입니다

  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}) 

답변

0

처럼 뭔가를 할 수 있습니다.

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)); 
    } 
} 
관련 문제