2013-03-17 3 views
0

У меня есть эта сущность:bltoolkit вставки данных в таблицу

namespace Entities.dbo 
{ 
    [TableName("tbl_snapshot")] 
    public class Snapshot : AbstractEntity 
    { 
     [MapField("track")] 
     public int TrackId { get; set; } 

     [Association(CanBeNull = false, OtherKey = "id", ThisKey = "track")] 
     public Track Track { get; set; } 

     [MapField("snapshotnumber")] 
     public int SnapshotNumber { get; set; } 

     [MapField("data")] 
     public string Data { get; set; } 
}} 

и я стараюсь, чтобы вставить новый снимок в базу данных, как это:

public static void XXX(Snapshot snapshot) 
     { 
      using (var db = new MyDbManager()) 
      { 

       var s = new Snapshot 
           { 
            Id = snapshot.Id, 
            Data = snapshot.Data, 
            SnapshotNumber = snapshot.SnapshotNumber, 
            TrackId = snapshot.Track.Id 
           }; 


       db.GetTable<Snapshot>().Insert(() => s); 
      } 
     } 

Вы можете увидеть любую проблему там? снимок я посылаю к методу XXX выглядеть следующим образом:

(Сериализированные в формате JSON):

{"TrackId":2,"Track":null,"SnapshotNumber":2,"Data":"030405","Id":3} 

любую идею, где проблема?

благодарит

+0

В чем проблема? Вы получаете исключение? Являются ли данные неверными? ... – Jensen

+0

нет исключений, вставка не была продолжена, ничего не вставлено –

+0

oh, поэтому я, наконец, поймаю исключение, и он говорит: операция недействительна из-за текущего состояния объекта. –

ответ

1

Проблема заключается в LinQ Bltoolkit в Вкладыш метод не поддерживает постоянное значение: db.GetTable() Вставка (() => s);. s - постоянное значение.

Вот 02 решения, которые вы можете попробовать:

  1. Просто не используйте метод Linq:

    db.Insert (ов);

  2. Если вам все еще нужен метод LinQ? пожалуйста, следует по этой ссылке, вы найдете обходной путь:

http://yfilonov.blogspot.com/2012/10/linq-warkaround-for-bltoolkit-insert.html