2017-06-12 3 views
0

J'utilise pimpant et que vous souhaitez partagerDapper C#: colonne de Split objet Type en TypeID et TypeName

Class EType 
{ 
    int TypeID; 
    string TypeName; 
} 

Class Employee 
{ 
    int id; 
    string location; 
    EType EmpType; 
} 

Tableau des employés:

ID||Location||TypeID||TypeName 

Au cours des opérations CRUD utilisant Dapper, je veux la conversion de EmpType dans les colonnes respectives dans DB automatiquement. Handler les gestionnaires de type et les cartes personnalisées. .?. Mais pas de chance :(

Toute aide, s'il vous plaît

Répondre

0

D'abord, vous devez utiliser les propriétés, pas de champs Ensuite, utilisez multi-mapping Dapper:

public class Employee 
{ 
    public int Id { get; set; } 
    public string Location { get; set; } 
    public EType EType { get; set; } 
} 

public class EType 
{ 
    public int TypeId { get; set; } 
    public string TypeName { get; set; } 
} 

[TestFixture] 
public class MultimappingTest 
{ 
    [Test] 
    public void TestSplit() 
    { 
     using (var conn = new SqlConnection(@"Data Source=.\sqlexpress;Integrated Security=true; Initial Catalog=foo")) 
     { 
      var result = 
       conn.Query<Employee, EType, Employee>(@"select Id = 1, Location = 'earth', TypeId = 2, TypeName = 'human'", 
        (employee, type) => 
        { 
         employee.EType = type; 
         return employee; 
        }, splitOn: "TypeId").First(); 

      Assert.That(result.EType.TypeId == 2); 
      Assert.That(result.EType.TypeName == "human"); 
     } 
    } 
} 
+0

de Merci beaucoup pour l'aide est-il de toute façon. pour gérer l'insertion et la mise à jour aussi bien? Fractionnement EType dans Typeid et Type nom automatiquement –

+0

Pas que je suis au courant de ... –