Я новичок в SubSonic и довольно новичок в LINQ, поэтому я просто пытаюсь собрать небольшое приложение.
У меня все шаблоны отсортированы и работают нормально, но яу нас возникли небольшие проблемы с этим оператором LINQ (немного упрощенно, у реального оператора есть и другие объединения, но они не влияют на эту конкретную проблему, поэтому я удалил их для краткости):
var addresses = from address in Database.Addresses.All()
select new Address()
{
MyNestedType = new NestedType()
{
Field1 = address.ADDR1
}
};
Если я выполню этот оператор, то получу ошибку Неправильное приведение из 'System.String' к 'NestedType'. при попытке перечислить результаты.
Я, вероятно, пропускаю очевидноено я нигде не вижу, чтобы я запрашивал такое преобразование.
Оба Field1 и address.ADDR1 являются строками.
Любые идеи, чтоЯ делаю неправильно?
Редактировать :
Я еще раз посмотрел на это и, пытаясь предоставить больше информации, я создал небольшой,полный пример с использованием SimpleRepository и базы данных SQLite, которая демонстрирует Issуе.Используя SimpleRepository, я получаю другую ошибку (последовательность не содержит элементов), но результат тот же.Вот полный код:
public class DatabaseAddress
{
public int Id { get; set; }
public string Address1 { get; set; }
}
public class Address
{
public NestedType MyNestedType;
}
public class NestedType
{
public string Field1 { get; set; }
}
static class Program
{
[STAThread]
static void Main()
{
var repo = new SimpleRepository("Db", SimpleRepositoryOptions.RunMigrations);
DatabaseAddress address1 = new DatabaseAddress();
address1.Address1 = "Test";
repo.Add(address1);
var all = repo.All<DatabaseAddress>();
var addresses = from address in repo.All<DatabaseAddress>()
select new Address { MyNestedType = new NestedType { Field1 = address.Address1 } };
}
}
В этом примере all
содержит объект, добавленный в базу данных, но addresses
возвращает «Последовательность не содержит элементов».
Если я использую анонимные типы вместо конкретных типов в операторе select
, это работает.
В моих знаниях явно есть пробел;любая помощь приветствуется.