Импорт функций Entity Framework 4 не работает

Я использую Entity Framework 4 с генератором кода POCO. У меня есть хранимая процедура, которая выполняет INSERT и возвращает @@ IDENTITY вставленной записи. Я пытаюсь импортировать хранимую процедуру как функцию в свой EDMX-файл, но у меня возникают проблемы с ее использованием.

В браузере модели я вижу хранимую процедуру в иерархии базы данных, а затем щелкаю правой кнопкой мыши и выберите «Импорт функции ...». Я пробовал использовать «Нет» в качестве возвращаемого типа, а также Int32 (хотя там написано «Коллекция .. Эта строка используется для создания имени файла, при этом необходимо удалить недопустимые символы и попробовать следующие параметры, но ни один из них не работает. Подскажите, пожалуйста, почему это такая понятная загадка? Я что-то не так делаю?

Я рассмотрел почти все связанные вопросы на этом сайте .. и теперь публикую сводный вопрос из всех предложений / ответов на другие похожие вопросы.

UPD: Проблема не связана с… Все эти варианты подходят работай. Так что разместите его в вики сообщества.

public static string CleanFileName1(string filename)
{            
    string file = filename;                                            
    file = string.Concat(file.Split(System.IO.Path.GetInvalidFileNameChars(), StringSplitOptions.RemoveEmptyEntries));

    if (file.Length > 250)
    {
        file = file.Substring(0, 250);
    }
    return file;
 }

public static string CleanFileName2(string filename)
{
    var builder = new StringBuilder();
    var invalid = System.IO.Path.GetInvalidFileNameChars();
    foreach (var cur in filename)
    {
        if (!invalid.Contains(cur))
        {
            builder.Append(cur);
        }
    }
    return builder.ToString();
}

public static string CleanFileName3(string filename)
{                                    
    string regexSearch = string.Format("{0}{1}",
        new string(System.IO.Path.GetInvalidFileNameChars()),
        new string(System.IO.Path.GetInvalidPathChars()));
    Regex r = new Regex(string.Format("[{0}]", Regex.Escape(regexSearch)));
    string file = r.Replace(filename, "");

    return file;
}       

public static string CleanFileName4(string filename)
{
    return new String(filename.Except(System.IO.Path.GetInvalidFileNameChars()).ToArray());
}   

public static string CleanFileName5(string filename)
{            
    string file = filename;

    foreach (char c in System.IO.Path.GetInvalidFileNameChars())
    {
        file = file.Replace(c, '_');
    }                                 
    return file;
}   
15
задан 3 revs, 2 users 75% 29 September 2010 в 21:33
поделиться