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.