3

私のモデルはこのように見えます...

[PrimaryKey("TaskId")]
public class Task
{
    public int TaskId { get; set; }

    [StringLength(1000)]
    [DisplayName("What do you want to do?")]
    public string Description { get; set; }

    [DisplayName("When do you want it done?")]
    [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = false)]
    [DataType(DataType.Date)]
    public DateTime CompleteByDate { get; set; }

    public bool IsCompleted { get; set; }

    public DateTime InsertDate { get; set; }
    public DateTime UpdateDate { get; set; }
}

Task テーブルからデータをフェッチしようとすると、最初に表示されるエラーの 1 つがこれです...

ERROR: 42P01: relation "Task" does not exist

問題は、私が知る限り、PetaPoco がこのような sql を生成することです...

SELECT "Task"."TaskId", "Task"."Description", "Task"."CompleteByDate", "Task"."IsCompleted", "Task"."InsertDate", "Task"."UpdateDate" FROM "Task"

したがって、引用符では大文字が重要であり、DB では、引用符で囲まれている場合、列名はすべて小文字でのみ認識されます。それを変更する方法があるかどうか疑問に思っています。私が現在見ている唯一の修正は、モデルを次のようにすることです(大文字と小文字の変更に注意してください)...

[PrimaryKey("taskid")]
[TableName("task")]
public class Task
{
    [Column("taskid")]
    public int taskid { get; set; }

    [StringLength(1000)]
    [DisplayName("What do you want to do?")]
    public string description { get; set; }

    [DisplayName("When do you want it done?")]
    [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = false)]
    [DataType(DataType.Date)]
    public DateTime completebydate { get; set; }
    public bool iscompleted { get; set; }
    public DateTime insertdate { get; set; }
    public DateTime updatedate { get; set; }
}

プロパティをすべて小文字にしたくありません。なぜこれをしなければならないのですか、これが唯一の修正ですか?

4

2 に答える 2

4

Petapoco は、列に一致する正確な (大文字と小文字を区別する) 名前を必要としますが、Column属性を指定すると、プロパティの名前を自由に変更できます (名前の変更を含む)。

[Column("taskid")]
public int TaskID { get; set; }
于 2012-07-04T22:40:56.457 に答える
0

PetaPoco (それが何であれ) が常に引用符で囲まれた識別子を生成する場合は、問題ありません。引用された識別子を生成しない場合は問題ありません。ときどき発生し、他では発生しない場合は、バグレポートを提出する必要があります。

バグ修正を待っている間、ちょっとしたエディター マクロ/Perl が列名などの名前を変更するのに役立つはずです。

ああ、手動の SQL を実行したり、他のシステムと相互運用したりする必要がある場合、CamelCased 識別子は完全な苦痛であることがわかります。

于 2012-07-04T21:26:40.307 に答える