2016-06-22 15 views
4

私はWPF C#デスクトップアプリケーションを持っており、SQLiteを使用しています。 - 何の問題プライマリキーがないので更新できません

using SQLite; 

[Table("Customer")] 
public class Customer 
{ 
    [AutoIncrement] 
    [PrimaryKey] 
    public int CustomerId { get; set; } 
    public string CustomerRef { get; set; } 
    public string SName { get; set; } 
    public string FName { get; set; }  
    public string ContactNo { get; set; } 

    public string Email { get; set; } 

    public string Add1 { get; set; } 
    public string Add2 { get; set; } 
    public string Add3 { get; set; } 
    public string Town { get; set; } 
    public string County { get; set; } 
    public string PCode { get; set; } 
    public string Country { get; set; } 


    public override string ToString() 
    { 
     StringBuilder sb = new StringBuilder(); 
     if (!string.IsNullOrEmpty(Add1)) 
     { 
      sb.AppendLine(Add1.Trim()); 
     } 
     if (!string.IsNullOrEmpty(Add2)) 
     { 
      sb.AppendLine(Add2.Trim()); 
     } 
     if (!string.IsNullOrEmpty(Add3)) 
     { 
      sb.AppendLine(Add3.Trim()); 
     } 
     if (!string.IsNullOrEmpty(Town)) 
     { 
      sb.AppendLine(Town.Trim()); 
     } 
     if (!string.IsNullOrEmpty(County)) 
     { 
      sb.AppendLine(County.Trim()); 
     } 
     if (!string.IsNullOrEmpty(PCode)) 
     { 
      sb.AppendLine(PCode.Trim()); 
     } 
     if (!string.IsNullOrEmpty(Country)) 
     { 
      sb.AppendLine(Country.Trim()); 
     } 
     return sb.ToString(); 
    } 
} 

私はそれにレコードを追加します。

私はこのモデルを持っています。私は更新しようとすると、プライマリキーがないので、更新できません。

これはコードです:

var query = DB.Connector.Table<InformedWorkerModel.Customer>().Where(d => d.CustomerRef == customer.CustomerRef).FirstOrDefault(); 

if (query != null) 
{ 
    query.Add1 = customer.Add1; 
    query.Add2 = customer.Add2; 
    query.Add3 = customer.Add3; 
    query.Town = customer.Town; 
    query.County = customer.County; 
    query.Country = customer.Country; 
    query.PCode = customer.PCode; 
    query.ContactNo = customer.ContactNo; 
    query.Email = customer.Email; 
    query.FName = customer.FName; 
    query.SName = customer.SName; 
    DB.Connector.Update(query); 
    return query; 
} 

クイックウォッチを見ることができるようにそれはここドライバコードに破壊し、フィールド上の主キー示しています

enter image description here

をこれがされます私が最初にデータベースを作成したスクリーンショット。

enter image description here

任意のアイデアしてください?

ありがとうございました

+0

は、はい、私はそれを知っているが、私のコードとデータスキーマがPKがすでに –

答えて

1

あなたは良いことを望んでいます!

あなたのデータスキーマのようで、モデルが正しくマップされていないようです。

マップする属性を使用できます。

[Table("Customer")] 
class Customer 
{ 
    [PrimaryKey, AutoIncrement]  
    [Column(Name = "CustomerId")] 
    public int CustomerId { get; set; } 

    ....... 
} 

よろしくMK

+0

感謝を設定されていることを示して@marc_s、私はあなたが投稿してまだ同じエラーを得た直前にそれを試してみました: –

+0

私はちょうどコードを通過して、1つの関数GetMapping(objtype)があります。あなたはそれが正常に動作していますか? –

+0

こんにちは、私は私の質問に記載されたものでした:)これは落ちるところです。このコードはSql Liteのナゲットからのダウンロードです。私は現在別のドライバを探しています –

関連する問題