PetaPoco не видит атрибуты класса

По какой-то причине, когда я настраиваю атрибуты в классе Poco для имени таблицы и первичного ключа, PetaPoco не видит их и по умолчанию использует идентификатор autoIncrement = false

[TableName("MyTableName")]
[PrimaryKey("Id", autoIncrement = true)]
public class MyClass
{
    public int Id { get; set; }
    public string Description { get; set; }
}

Когда я вызываю метод Insert(), это терпит неудачу. Если я вызываю метод вставки и явно передаю имя таблицы, столбец первичного ключа, автоинкремент, тогда он работает.

Есть идеи, почему Peta Poco не видит атрибутов?

Я использую C# VS 2012 с таргетингом на 4.5.

2 ответа

Попробуйте добавить атрибут PrimaryKeyColumn в свойство Id, как показано ниже

[TableName("MyTableName")]
[PrimaryKey("Id", autoIncrement = true)]
public class MyClass
{
    [PrimaryKeyColumn(AutoIncrement=true)]
    public int Id { get; set; }

    public string Description { get; set; }
}

Попробуйте изменить свои аннотации Data Data следующим образом:

[DotNetNuke.ComponentModel.DataAnnotations.TableName("MyTableName")]
[DotNetNuke.ComponentModel.DataAnnotations.PrimaryKey("Id", AutoIncrement = true)]
public class MyClass
{
    public int Id { get; set; }
    public string Description { get; set; }
}

Проверьте это и посмотрите, работает ли это для вас. Я думаю, что они не видят их в шаблонах t4, которые вы, возможно, скачали с NuGet, будут иметь ссылку на использование PetaPoco вверху, а в DataUtil.cs в ядре DNN я думаю, что он ищет аннотации DNN. Не уверен, что это ошибка, или дизайн, но я сам видел это и задавался вопросом, должны ли быть шаблоны t4 только для DNN PetaPoco.

Я не уверен, что для AutoIncrement задано значение false, но обратите внимание, что я поставил его в верхнем регистре для "A".

Надеюсь, это поможет, я бы продолжал смотреть на следующую версию, я протестировал это на 7.0.5 и посмотрел, обновляют ли они это или выпускают шаблоны t4 только для DNN PetaPoco.

Другие вопросы по тегам