出于某种原因,当我在Poco类上为tablename和主键设置属性时PetaPoco没有看到它们并默认为ID autoIncrement = false
[TableName("MyTableName")]
[PrimaryKey("Id", autoIncrement = true)]
public class MyClass
{
public int Id { get; set; }
public string Description { get; set; }
}
当我调用Insert()方法时,这会失败。 如果我调用insert方法并显式传递表名,主键列,自动增量,那么它就可以工作。
为什么Peta Poco没有看到属性的任何想法?
我正在使用针对4.5框架的C#VS 2012
答案 0 :(得分:0)
尝试更改您的数据数据注释:
[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; }
}
测试一下,看看这是否适合你。我认为你可能从NuGet下载的t4模板中没有看到它们将使用PetaPoco参考顶部和DNN核心中的DataUtil.cs我相信它正在寻找DNN注释。不确定这是一个错误,还是设计,但我自己也看到了,并想知道是否应该只为DNN PetaPoco提供t4模板。
我不确定AutoIncrement是否设置为false,但请注意我将其设置为“A”的大写。
希望这会有所帮助,我会继续关注下一个版本,我在7.0.5上进行了测试,看看他们是否为DNN PetaPoco更新了这个版本或发布了t4模板。
答案 1 :(得分:0)
尝试将PrimaryKeyColumn属性添加到Id属性,如下所示
[TableName("MyTableName")]
[PrimaryKey("Id", autoIncrement = true)]
public class MyClass
{
[PrimaryKeyColumn(AutoIncrement=true)]
public int Id { get; set; }
public string Description { get; set; }
}