首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Simple.Data插入记录

无法使用Simple.Data插入记录
EN

Stack Overflow用户
提问于 2016-11-02 20:52:18
回答 1查看 108关注 0票数 1

我使用的是Simple.Data,在最后一行试图运行下面的代码时会收到以下错误:在System.Core.dll中出现了一个未处理的'System.ArgumentException‘类型异常。

代码语言:javascript
复制
    var db = Database.OpenConnection(ConnectionString);
    var product = db.DimDistrict.FindByDistrict("HOUSE");
    //db.FunnelQuotes.Insert(
    //    Company: funnelQuotes[0].Company,
    //    Opportunity: funnelQuotes[0].Opportunity,
    //    QuoteNumber: funnelQuotes[0].QuoteNumber,
    //    QuotedPrice: funnelQuotes[0].QuotedPrice);
    IList<FunnelQuote> retrows = db.FunnelQuotes.Insert(funnelQuotes).ToList();

注意,注释掉的代码可以工作。

编辑:添加类定义

代码语言:javascript
复制
class FunnelQuote
{
    public string Company { get; set; }
    public string Opportunity { get; set; }
    public string QuoteNumber { get; set; }
    public float QuotedPrice { get; set; }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-14 20:25:57

由于我找不出为什么这不起作用,所以我最终只能在foreach循环中一次只插入一条记录。然而,我发现了问题的根源。这是由于字段大小太小,例如,数据库中有一个字段的NVARCHAR( 10 )数据类型,但其中一行的字段大于10个字符。原来,foreach循环只是通过截断字段来隐藏错误。因此,我想我应该指出Simple.Data的行为,这取决于您如何进行插入。

  1. 带有命名参数的Insert (如果insert by对象是相同的):没有抛出错误,如果文本字段太长,文本字段将被截断。 db.FunnelQuotes.Insert(公司: funnelQuotes.Company,机遇: funnelQuotes.Opportunity,QuoteNumber: funnelQuotes.QuoteNumber,QuotedPrice: funnelQuotes.QuotedPrice );
  2. 多插入,而不将结果赋值给变量:抛出System.InvalidOperationException时,InnerException会告诉您“字符串或二进制数据将被截断”。 db.Quotes.Insert(funnelQuotes);
  3. 多插入,将结果赋值给列表,如Microsoft.CSharp.RuntimeBinder.RuntimeBinderException文档所示:抛出Simple.Data。细节是“不能对空引用执行运行时绑定”。但是,在本例中,仍然插入了truncated.List数据!任何过长的字符串字段都将是db.Quotes.Insert retrow= db.Quotes.Insert(funnelQuotes).ToList();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40389579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档