Получите единственные объекты Платформы Объекта с помощью запроса LINQ или GetObjectKey?

Вам нужно всего лишь от 3 до 5 языков, чтобы сделать все. С является определенным. Может быть, сборка, но вы должны это знать и уметь ее использовать. Может быть, JavaScript и / или Java, если вы пишете код для Интернета. Язык оболочки, такой как bash, и один HLL, такой как Lisp, который может быть полезен. Все остальное отвлекает.

8
задан Andrew 24 October 2011 в 12:39
поделиться

2 ответа

Я предпочитаю последнее, потому что ясно, что вы хотите. Используя EntityKey (а это то, что команда ADO.NET, похоже, не понимает), мы должны обойти структуру, навязанную нам Entity Framework. Используя язык запросов, как вы это делали во втором примере, мы говорим всем остальным разработчикам, которые когда-либо будут смотреть на наш код, эй, нам просто нужен этот объект с этим идентификатором или мы хотим null.

Я не думаю, что быть правым (как и в первом примере) является оправданием непонятности для ваших коллег. :)

9
ответ дан 5 December 2019 в 17:40
поделиться

В своем решении я использую универсальное программирование. В базовом классе Repository у меня есть код, подобный этому:

private string GetEnittySetName(string entityTypeName)
{
    var container = context.MetadataWorkspace.GetEntityContainer(context.DefaultContainerName, DataSpace.CSpace);
    string entitySetName = (from meta in container.BaseEntitySets
                            where meta.ElementType.Name == entityTypeName
                            select meta.Name).FirstOrDefault();
    return entitySetName;
}

private string entitySetName;

protected string EntitySetName
{
    get
    {
        if (string.IsNullOrEmpty(entitySetName))
        {
            entitySetName = GetEnittySetName(typeof(T).Name);
        }
        return entitySetName;
    }
}

public T SelectOne(Func<T, bool> exp)
{
    return context.CreateQuery<T>(EntitySetName).Where(exp).FirstOrDefault();
}
1
ответ дан 5 December 2019 в 17:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: