Дозвуковые 3 - простой репозиторий и создание внешнего ключа

StackOverflow https://stackoverflow.com/questions/4159850

Вопрос

Там, кажется, вряд ли нет примеров там, так что здесь идет:

Вот мои три структуры, но это, похоже, не создает таблиц должным образом и когда я называю следующую строку, он говорит, что идентификатор не распознан:

IEnumerable<Permission> permissions = _data.Find<RolePermission>(x => x.Role.RoleKey == roleKey).Select(x => x.Permission);

Rolepermission:

public class RolePermission
{

    [SubSonicPrimaryKey]
    public int RolePermissionId { get; set; }

    public int RoleId { get; set; }
    public int PermissionId { get; set; }

    //Foreign Key of Role
    public Role Role { get; set; }

    //Foreign key of Permission
    public Permission Permission { get; set; }

}

Разрешение:

public class Permission
    {

        [SubSonicPrimaryKey]
        public int Id { get; set; }
        [SubSonicLongString]

        public string PermissionKey { get; set; }
        [SubSonicLongString]
        public string PermissionDescription { get; set; }

    }

Роль:

public class Role
    {

        [SubSonicPrimaryKey]
        public int Id { get; set; }

        [SubSonicLongString]
        public string RoleKey { get; set; }

        [SubSonicLongString]
        public string RoleDescription { get; set; }

    }
Это было полезно?

Решение

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

  • Если ваш объект содержит свой свой свой свой свой свой свой свой свой объект, который является вашим основным ключом.
  • Если нет, вы должны сказать дозвуковую, это ваш PK, украшая свойство с SubSonicPrimaryKey атрибут (как вы сделали).
  • Если у вас есть свойство под названием ID, и он также оформлен с атрибутом (например, ваша роль и класс разрешений) дозвуковывает свойство дважды и не проверяет, являются ли они оба равными. Затем он выбрасывает исключение, потому что он не может надежно определить, какой из них взять.

Короче говоря, вы должны попробовать:

а) Удалите атрибут из столбца ID

б) переименовать свойство для роли или правдоподобного (которая будет более состоять, потому что ваш класс Rolepermission имеет PK, называемый Rolepermisside)

Если это не поможет, пожалуйста, укажите Stacktrace.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top