Mam problem z MultiMaps w eleganckich próbach podziału na kolumnę zawierającą NULL
. Wydaje się, że Dapper nie tworzy instancji obiektu, a moja funkcja odwzorowania otrzymuje obiekt zamiast obiektu.Dapper MultiMap nie działa z splitOn z wartością NULL
Oto mój nowy test:
class Product
{
public int Id { get; set; }
public string Name { get; set; }
public Category Category { get; set; }
}
class Category
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
public void TestMultiMapWithSplitWithNullValue()
{
var sql = @"select 1 as id, 'abc' as name, NULL as description, 'def' as name";
var product = connection.Query<Product, Category, Product>(sql, (prod, cat) =>
{
prod.Category = cat;
return prod;
}, splitOn: "description").First();
// assertions
product.Id.IsEqualTo(1);
product.Name.IsEqualTo("abc");
product.Category.IsNotNull();
product.Category.Id.IsEqualTo(0);
product.Category.Name.IsEqualTo("def");
product.Category.Description.IsNull();
}
Linia, która nie jest product.Category.IsNotNull();
ze względu na fakt, że cat
przekazywane do funkcji mapowania null
.
Dodałem także tej metody twierdzą, Klasa:
public static void IsNotNull(this object obj)
{
if (obj == null)
{
throw new ApplicationException("Expected not null");
}
}
Chciałbym pomóc, zadzwoniłem do Paula na twitterze, który pisze github dla Windows. Wiem, że ciężko pracują, aby rozwiązać ten problem z kreską. –
@SamSaffron - dziękuję za komentarz. Jeśli dasz mi znać, kiedy już to załatwisz, mogę wprowadzić zmiany. Możesz jednak skopiować test z mojego posta - jest całkiem oczywiste, gdzie powinny nastąpić zmiany ;-) PS. Uwielbiam github dla Windows. Daj mi znać, jeśli mógłbym pomóc w testowaniu. –
Wysłałem wiadomość PR dla Dappera, która powinna spowodować, że problemy z kończeniem linii znikną.Daj mi znać, czy nadal się pojawiają. Morał z historii: * Kopiuj-wklej [ten plik] (https://gist.github.com/2802523#file_the+original+guy+used+autocrlffalse) jako ".gitattributes", jeśli oryginalny facet użył 'autocrlf = false '* Kopiuj-wklej [ten plik] (https://gist.github.com/2802523#file_the+original+guy+used+autocrlftrue) jako' .gitattributes' jeśli użył 'autocrlf = true' –