LinqTOsql returns a "specified exception invalid" exception at run time

I have two linqTOsql elements that have parent and child relationships, one for many. I ran into a problem that when I retrieve the parent record, I cannot iterate over related records in the child table.

This code does not work:

    public string test()
    { 
        string output;
        StreamEntry entry = genesisRepository.StreamEntries.FirstOrDefault(x => x.seID == 6);

        output = entry.seUrl.ToString() + "<br />";
        foreach(var item in entry.FieldInstance)
        {

            output = "<ul>";
            output += "<li>" + item.fiLabel.ToString() + "</li>";
            output = "</ul>";
        }
        return output;
    }

Error:

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidCastException: Specified cast is not valid.

Source Error: 


Line 230:            
Line 231:            output = entry.seUrl.ToString() + "<br />";
Line 232:            foreach(var item in entry.FieldInstance)
Line 233:            {
Line 234:                


Source File: C:\pathtoscript.cs    Line: 232 

Stack Trace: 


[InvalidCastException: Specified cast is not valid.]
   System.Data.SqlClient.SqlBuffer.get_Int32() +5002837
   System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i) +38
   Read_FieldInstance(ObjectMaterializer`1 ) +1993
   System.Data.Linq.SqlClient.ObjectReader`2.MoveNext() +32
   System.Data.Linq.EntitySet`1.Load() +124
   System.Data.Linq.EntitySet`1.GetEnumerator() +13

I do not understand why the stack is displayed int32. I'm 99% sure that I use long, and bigintfor all of their IDs. Just to cover all my databases, heres the parent and child model code:

Parent:

[Table]
public class StreamEntry
{
    [HiddenInput(DisplayValue = false)]
    [Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
    public long seID { get; set; }

    /* other fields removed for brevity  */

    // relationship (one entry to many FieldInstances) 
    // uses EntitySet<FieldInstance> and OtherKey for the FK in FieldInstance 
    // which is the "Other" table.
    private EntitySet<FieldInstance> _FieldInstance = new EntitySet<FieldInstance>();
    [System.Data.Linq.Mapping.Association(Storage = "_FieldInstance", OtherKey = "fiStreamEntryID")]
    public EntitySet<FieldInstance> FieldInstance
    {
        get { return this._FieldInstance; }
        set { this._FieldInstance.Assign(value); }
    }

}

Child:

[Table]
public class FieldInstance
{
    [Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
    public long fiID { get; set; }

   /* Other field removed for brevity */ 

    [Column]
    public long fiStreamEntryID { get; set; }  // FK

    // Relationship (many FieldInstances to one StreamEntry)
    // using EntityRef<StreamEntry> and ThisKey
    // which is "This" table FK
    private EntityRef<StreamEntry> _StreamEntry;
    [System.Data.Linq.Mapping.Association(Storage = "_StreamEntry", ThisKey = "fiStreamEntryID")]
    public StreamEntry StreamEntry
    {
        get { return this._StreamEntry.Entity; }
        set { this._StreamEntry.Entity = value; }
    }
}

What could be the reason for my exception exception?

Edit - Add Table Definitions

StreamEntry table:

seID bigint notnull

seUrl nvarchar (255) notnull

seHeadline nvarchar (255) notnull

seBody ntext nullable

seDescription nvarchar (255) nullable

seKeywords nvarchar (255) nullable

seTitle nvarchar (255) nullable

seOrder bigint notnull

seDateCreated datetime notnull

seDateModified datetime notnull

StreamID bigint notnull

AllowComents bit notnull

FieldInstance table:

ftid bigint notnull

ftIsRequired bit notnull

ftLabel nvarchar (50) notnull

ftStrValue nvarchar (1000) nullable

ftDateTimeValue datetime nullable

ftIntValue int nullable

ftDecValue decimal (18,0) nullable

ftOrder bigint notnull

ftStreamEntryID bigint notnull --- FK for StreamEntry table

ftFieldTypeID bigint notbull

Edit - StreamEntry entry added

This code:

   public string test()
    { 
        string output;
        StreamEntry entry = genesisRepository.StreamEntries.FirstOrDefault(x => x.seID == 6);

        output = entry.seID.ToString() + "<br />";
        output += entry.seUrl + "<br />";
        output += entry.seHeadline + "<br />";
        output += entry.seBody + "<br />";
        output += entry.seDescription + "<br />";
        output += entry.seKeywords + "<br />";
        output += entry.seTitle + "<br />";
        output += entry.seOrder.ToString() + "<br />";
        output += entry.seDateCreated.ToString() + "<br />";
        output += entry.seDateModified.ToString() + "<br />";
        output += entry.StreamID.ToString() + "<br />";
        output += entry.AllowComments.ToString() + "<br />";

        return output;
    }

Return:

6

ASD

ASD

<P → <P → <P → <P →

0

2010-11-16 4:10:45 PM

2010-11-16 4:10:45 PM

75

False

+3
1

, DBML?

+3

Source: https://habr.com/ru/post/1775308/


All Articles