Вложенные лямбда-выражения и строковые культуры - PullRequest
3 голосов
/ 16 марта 2010

Я пытаюсь сделать вложенное лямбда-выражение, подобное следующему:

textLocalizationTable.Where(
  z => z.SpokenLanguage.Any(
    x => x.FromCulture == "en-GB")
  ).ToList();

но я получаю ошибку:

Member access 'System.String FromCulture' of 
'DomainModel.Entities.SpokenLanguage' not legal on type
'System.Data.Linq.EntitySet`1[DomainModel.Entities.SpokenLanguage].

TextLocalization имеет отношение к разговорному языку:

[Association(OtherKey = "LocalizationID", ThisKey = "LocalizationID", Storage = "_SpokenLanguage")]
private EntitySet<SpokenLanguage> _SpokenLanguage = new EntitySet<SpokenLanguage>();
public EntitySet<SpokenLanguage> SpokenLanguage
{
     set { _SpokenLanguage = value; }
     get { return _SpokenLanguage; }
}

Есть идеи, что не так?


Я попробовал ваше предложение с той же ошибкой.

Spokenlanguage теперь имеет эту ассоциацию:

    internal EntityRef<TextLocalization> _TextLocalization;
    [Association(ThisKey = "LocalizationID", OtherKey = "LocalizationID", Storage = "_TextLocalization")]
    public TextLocalization TextLocalization
    {
        get { return _TextLocalization.Entity; }
        internal set { _TextLocalization.Entity = value; LocalizationID = value.LocalizationID; }
    }

В тексте данных добавлено:

        DataLoadOptions dlo = new DataLoadOptions();
        dlo.LoadWith<TextLocalization>(text => text.SpokenLanguage);
        dc.LoadOptions = dlo;

Есть еще идеи? Может быть, это только я неправильно понял некоторые фундаментальные вещи ??

1 Ответ

1 голос
/ 19 марта 2010

Эта проблема определенно связана с "Linq to SQL" и, скорее всего, с ассоциацией.

Вот пара предложений:

  • Вы не упоминаете, используете ли вы [AssociationAttribute] установлен на вашем дочерний стол, он вам понадобится, если его нет.
  • Возможно, вам придется использовать DataLoadOptions для вашего DataContext, поэтому дочерняя таблица загружается при запросе родительской таблицы.
  • В методе set свойства Entity я бы использовал _SpokenLanguage.Assign (value) вместо _SpokenLanguage = value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...