| Bug #49850 | Entity Framework - Table per Type inheritance List error | ||
|---|---|---|---|
| Submitted: | 21 Dec 2009 15:15 | Modified: | 24 Mar 2010 13:45 | 
| Reporter: | Eduardo Lima | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | Connector / NET | Severity: | S1 (Critical) | 
| Version: | 6.1.3 | OS: | Any | 
| Assigned to: | CPU Architecture: | Any | |
| Tags: | entity framework, Inheritance | ||
   [21 Dec 2009 15:35]
   Eduardo Lima        
  Test Case Project and Database creation script
Attachment: InheritanceTest.zip (application/x-zip-compressed, text), 33.73 KiB.
   [3 Feb 2010 7:34]
   Tonci Grgin        
  Eduardo, your report is being discussed internally, we did not forget about it.
   [11 Feb 2010 13:21]
   Tonci Grgin        
  Eduardo.
Your test case crashes in 
        public string DescChild
        {
            get
            {
                return this._DescChild;
            }
            set
            {
                this.OnDescChildChanging(value);
                this.ReportPropertyChanging("DescChild");
                this._DescChild = global::System.Data.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
                this.ReportPropertyChanged("DescChild");
                this.OnDescChildChanged();
            }
        }
after executing IList<parent> parents = ctx.parent.ToList();
which makes it rather useless. Can you please rework your code so that it works against latest released version of c.NET (6.2.2)?
 
   [8 Mar 2010 21:16]
   Bugs System        
  A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/102619 799 Reggie Burnett 2010-03-08 - fixed bug in sql generation when using a negated binary fragment in EF (bug #49850)
   [8 Mar 2010 21:23]
   Reggie Burnett        
  fixed in 6.0.6, 6.1.4, 6.2.3, 6.3.2+
   [9 Mar 2010 6:59]
   Tonci Grgin        
  Thanks Reggie.
   [24 Mar 2010 13:45]
   Tony Bedford        
  An entry has been added to changelogs: 6.0.6, 6.1.4, 6.2.3, 6.3.2: When using table per type inheritance and listing the contents of the parent table, the result of the query was a list of child objects, even though there was no related child record with the same parent Id.
   [17 May 2011 15:06]
   Alexander Sidorov        
  Looks like this bug is reproducable again in 6.3.6
   [17 May 2011 15:11]
   Alexander Sidorov        
  Looks like this bug is reproducable again in 6.3.6

Description: There is a problem using table per type inheritance when listing the contents of the parent table. For some reason the result of the query is a list of child objects, even if there is no related child record with the same parent Id. How to repeat: Create a simple application with 2 tables (parent and child) and replace the one-to-one foreign key relationship to a inheritance relationshiop. Then use the code above. The first query returns correctly a list of all child objects, but the second query returns a list of all parent, but with the "is child" incorrectly set to true for all items in the list using (testdbEntities ctx = new testdbEntities()) { IList<child> childs = ctx.parent.OfType<child>().ToList(); foreach (child c in childs) { Console.WriteLine("name: " + c.nameParent + " desc: " + c.DescChild); } IList<parent> parents = ctx.parent.ToList(); foreach (parent p in parents) { Console.WriteLine("name: " + p.nameParent + " is child: " + (p is child)); } } Suggested fix: I could fix this problem changing the MySql provider to a comercial product - called Devart dotConnect for MySQL.