2016-11-02 3 views
1

Simple.Data를 사용하고 있으며 아래 코드를 실행하려고 할 때 마지막 줄에 다음 오류가 표시됩니다. 처리되지 않은 'System.ArgumentException'유형의 예외가 System.Core에서 발생했습니다. .dll.Simple.Data와 함께 레코드를 삽입 할 수 없습니다.

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(); 

주석 처리 된 코드가 작동한다는 점에 유의하십시오.

편집 : 추가 된 클래스 정의

class FunnelQuote 
{ 
    public string Company { get; set; } 
    public string Opportunity { get; set; } 
    public string QuoteNumber { get; set; } 
    public float QuotedPrice { get; set; } 
} 
+1

내가 funnelQuotes가 삽입 방법에 대한 잘못된 주장이라고 생각 – Sebi

+0

왜 funnelQuotes 잘못된 인수라고 말할 것인가? 그럼 그게 뭐야? – jaromey

+0

실패 행의 유일한 인수이기 때문입니다. 더 나은 대답이 필요한 경우 더 많은 정보가 필요합니다. FunnelQuotes 클래스가 도움이 될 수 있음을 보여줍니다. – Sebi

답변

1

나는이 작동하지 않는 이유를 찾을 수 없습니다 때문에, 나는 그냥 foreach 루프에서 한 번에 레코드를 삽입 끝났다. 그러나 문제의 원인을 발견했습니다. 필드 크기가 너무 작아서 필드 중 하나에 대해 데이터베이스에 NVARCHAR (10) 데이터 형식이 있었지만 행 중 하나에 해당 필드에 10자를 초과 한 경우와 같이 필드 크기가 너무 작아서 발생했습니다. foreach 루프가 필드를 잘라 냄으로써 오류를 숨기고있는 것으로 나타났습니다. 그래서 Simple.Data의 동작을 어떻게 삽입하는지에 따라 달라질 것이라고 생각했습니다. 명명 된 매개 변수와

  1. 삽입 (난 당신이 객체로 삽입 할 경우는 동일합니다 있으리라 믿고있어) : 오류가 발생되지 않고 너무 긴 경우 텍스트 필드가 잘립니다. 변수에 결과를 할당하지 않고

    db.FunnelQuotes.Insert(
        Company: funnelQuotes[0].Company, 
        Opportunity: funnelQuotes[0].Opportunity, 
        QuoteNumber: funnelQuotes[0].QuoteNumber, 
        QuotedPrice: funnelQuotes[0].QuotedPrice 
    ); 
    
  2. 다중 삽입 : ". 문자열이나 이진 데이터는 잘립니다"System.InvalidOperationException이 있음을 알려주는의 InnerException으로 발생합니다 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException가 발생합니다 다음 Simple.Data 문서와 같이 목록에 결과를 할당

    db.Quotes.Insert(funnelQuotes); 
    
  3. 다중 삽입. 세부 사항은 "널 참조에서 런타임 바인딩을 수행 할 수 없습니다"입니다. 그러나이 경우 데이터가 삽입됩니다! 길이가 너무 긴 문자열 필드는 이 잘리고으로 잘립니다.

    List<FunnelQuote> retrows = db.Quotes.Insert(funnelQuotes).ToList(); 
    
관련 문제