Как устранить ошибку «Не могу решить, какое свойство считать ключом» - PullRequest
0 голосов
/ 10 октября 2010

Я получаю это сообщение об ошибке:

"Невозможно решить, какое свойство рассматривать как ключ - вы можете создать свойство с именем 'ID' или отметить его атрибутом SubSonicPrimaryKey"

Код, о котором идет речь, генерируется context.tt:

    public SqlQuery Delete<T>(Expression<Func<T,bool>> column) where T:new()
    {
        LambdaExpression lamda = column;
        SqlQuery result = new Delete<T>(this.Provider);
        result = result.From<T>();
        result.Constraints=lamda.ParseConstraints().ToList();
        return result;
    }

В моей БД соответствующая таблица на самом деле имеет первичный ключ с именем ID. И я попытался вставить атрибут SubSonicPrimaryKey:

    uint _ID;
    [SubSonicPrimaryKey]
    public uint ID
    {
        get { return _ID; }
        set
        {...

Как я могу это исправить?

Ответы [ 2 ]

1 голос
/ 10 октября 2010

Вы должны опубликовать трассировку стека вашего исключения.

Это просто дикая догадка, но я предполагаю, что subsonic находит два возможных первичных ключа, один из которых называется ID, а другой с атрибутом SubSonicPrimaryKey, и не проверяет, равны ли они, а количество возможных ключей не равно 1 исключение выбрасывается.

Вы должны попытаться удалить атрибут SubSonicPrimaryKey вашего класса, поскольку свойство уже называется ID.

0 голосов
/ 19 октября 2010

Я предполагаю, что ваша проблема связана с типом значения uint. SubSonic имеет проблемы с обработкой типов без знака. Попробуйте использовать свойство int вместо своего первичного ключа!

...