【问题标题】:bltoolkit inserting data to a tablebltoolkit 向表中插入数据
【发布时间】:2013-09-13 14:49:07
【问题描述】:

我有这个实体:

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}

知道问题出在哪里吗?

谢谢

【问题讨论】:

  • 有什么问题?你有例外吗?数据不正确吗? ...
  • 没有异常,插入没有进行,什么都没有插入
  • 哦,所以我终于捕捉到了异常,它说:由于对象的当前状态,操作无效。
  • 异常时需要完整的调用堆栈。

标签: c# persistence entity bltoolkit


【解决方案1】:

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

您可以尝试以下 02 个解决方案:

  1. 干脆不要使用 LinQ 方法:

    db.Insert(s);

  2. 如果您仍然想要 LinQ 方法?请点击此链接,您会找到解决方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多