2013-03-17 64 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 2013-03-17 12:55:17

+0

也不例外,插入没有进行,没有插入任何东西 – 2013-03-17 13:00:01

+0

哦,所以我最终发现异常,它说:由于对象的当前状态,操作无效。 – 2013-03-17 17:04:24

回答

1

问题是Bltoolkit的LinQ中插入方法不支持的恒定值: db.GetTable()插入(()=> S)。 s是一个常数值。

这里有02解决方案,您可以尝试:

  1. 只要不使用LINQ的方法:

    db.Insert(S);

  2. 如果你还想要LinQ方法?请遵循此链接,你会找到一个解决办法:

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