LLBLGen загружает отдельный элемент по полям, которые не являются первичными ключами - PullRequest
0 голосов
/ 05 марта 2020

Я пытался загрузить отдельные элементы с помощью LLBLGen по полям в таблице, которые не являются первичными ключами.

Я могу только определить, как заполнять первичные ключи в FetchEntity.

Чтобы отфильтровать не первичные ключи, мне нужно получить коллекцию и использовать linq, чтобы получить первый. Это похоже на запах, мне было интересно, есть ли лучший способ?

 public BinLocationEntity GetDefaultBinLocation(string firstName, string lastName)
    {


        var persons = new EntityCollection<PersonEntity>();
        var filter = new RelationPredicateBucket();
        filter.PredicateExpression.Add(PersonFields.FirstName == firstName);
        filter.PredicateExpression.Add(PersonFields.LastName== lastName);

        using (var adapter = this.DataAccessAdapter)
        {
            adapter.FetchEntityCollection(persons , filter);
        }
        return persons .First();
    }

Я знаю, что демо-код будет плохим в реальном мире, просто в качестве примера.

1 Ответ

0 голосов
/ 09 марта 2020

Вы также можете получить по уникальному ограничению:

https://www.llblgen.com/Documentation/5.6/LLBLGen%20Pro%20RTF/Using%20the%20generated%20code/Adapter/gencode_usingentityclasses_instantiating.htm#using -a-unique-constraints-value

Это не имеет большого смысла для ( напрямую) извлекать один объект, используя поля, которые не являются первичными ключами и не являются уникальными ограничениями. Сгенерированный код не может знать, что ваш запрос должен логически привести к возвращению единственной сущности.

Использование Linq .First () в этих случаях полностью уместно и совсем не пахнет кодом / дизайном.

...