0

出于某种原因,当我在 Poco 类上为表名和主键设置属性时,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

4

2 回答 2

0

尝试像这样更改您的 Data DataAnnotations:

[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 模板。

于 2013-05-02T22:00:11.317 回答
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; }
}
于 2015-06-30T18:43:07.750 回答